首页 > 解决方案 > 在列表理解中组合文本

问题描述

使用 cats :: Integer -> String

如何显示 > cats 5

将会呈现

cats
cats cats
cats cats cats
cats cats cats cats
cats cats cats cats cats

我试过单行和多行输出

cat n = concat["cat\n" | n <- [0..n-1]]cat_row n = concat["cat " | m <- [0..n-1], m < n]

但我不确定如何将它们结合起来。

标签: haskell

解决方案


您已经有了单行的解决方案:

cat_row n = concat["cat " | m <- [0..n-1], m < n]

(顺便说一句,最后一个m < n是多余的,因为它总是正确的)

因此,您可以以相同的方式对其进行迭代:

cat n = concat[cat_row m ++ "\n" | m <- [1..n]]

对于更简单的解决方案,您可以利用库函数unlinesunwords.


推荐阅读