在 Haskell 中,我们可以展平列表列表展平列表列表
对于元组的简单情况,我可以看到我们将如何展平某些元组,如下例所示:
flatten :: (a, (b, c)) -> (a, b, c)
flatten x = (fst x, fst(snd x), snd(snd x))
flatten2 :: ((a, b), c) -> (a, b, c)
flatten2 x = (fst(fst x), snd(fst x), snd x)
Run Code Online (Sandbox Code Playgroud)
但是,我正在寻找一个函数,该函数接受任何嵌套元组作为输入并将该元组展平。
可以在 Haskell 中创建这样的函数吗?
如果不能创建,为什么会这样?
当我在Haskell书中看到concat函数时,我想知道如何在Haskell中展平下面的列表.在Python中,我可以这样做,因为我可以在函数中检查它的类型.但在哈斯克尔,我做不到.我如何压扁下面的列表?
input: [[1, 2], [[2, 3], 5], [[[2, 3], [4, 5]], [2, 3]]]
output: [1, 2, 2, 3, 5, 2, 3, 4, 5, 2, 3]
Run Code Online (Sandbox Code Playgroud) haskell ×2