haskell - 在列表理解中组合文本
问题描述
使用
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]
但我不确定如何将它们结合起来。
解决方案
您已经有了单行的解决方案:
cat_row n = concat["cat " | m <- [0..n-1], m < n]
(顺便说一句,最后一个m < n
是多余的,因为它总是正确的)
因此,您可以以相同的方式对其进行迭代:
cat n = concat[cat_row m ++ "\n" | m <- [1..n]]
对于更简单的解决方案,您可以利用库函数unlines
和unwords
.
推荐阅读
- python - Keras 中单一维度的全局运算符?
- vb.net-2010 - Process.Start 从其他表单的文本框中删除文本
- vb.net - 为什么我的类中的公共只读属性不显示???(视觉工作室 2019)
- c# - 为什么是 ImmutableList
一个类但 ImmutableArray 一个结构? - mediawiki - 带有链接和内联 html 标签的 MediaWiki 模板
- python - 使用 Python 将 JSON 内容写入 HDFS 位置
- shell - 无法创建先进先出“[Errno 17] 文件存在”
- variables - 将变量的多个值设置为“选项”
- python - 如何使用自定义值在 2D 画布上栅格化 2D 点?
- python - 神经网络的两步训练