【发布时间】:2012-03-17 16:20:18
【问题描述】:
当我在 Haskell 书中看到 concat 函数时,我想知道如何在 Haskell 中展平下面的列表。在 Python 中,我可以这样做,因为我可以在函数中检查它的类型。但在 Haskell 中我不能。如何展平下面的列表?
input: [[1, 2], [[2, 3], 5], [[[2, 3], [4, 5]], [2, 3]]]
output: [1, 2, 2, 3, 5, 2, 3, 4, 5, 2, 3]
【问题讨论】:
-
注意 - 在 Haskell 中,如果您有嵌套列表,您通常会使用树而不是列表。在像 Haskell 这样的强类型语言中,嵌套的结构必须反映在列表类型中——有时这很好,但通常你真的想要一棵树,而不是类型只需要考虑元素而不是结构。标准库中有一个模块Data.Tree,它是一棵玫瑰树,或者很容易自己滚动。
-
您的输入甚至不是 Haskell 中的有效列表。
标签: haskell