我试图在Haskell中列出列表中的任意数量的列表.我知道这个问题之前已经发布在Stack上了,但那里的答案对我来说太复杂了(我是Haskell的新手),或者没有满足我需求的答案(例如,concat对我不起作用,因为我我必须自己为考试学习指南写这个扁平化的功能.我也在Haskell中编写自己的flatten函数,以了解为什么顶级解决方案使用模块.
这是我到目前为止所拥有的.
flatten :: [[a]] -> [a]
flatten [] = []
flatten (x:xs) = flatten x:flatten xs
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个错误:
Inferred type is not general enough
*** Expression : flatten
*** Expected type : [[a]] -> [a]
*** Inferred type : [[[a]]] -> [[a]]
Run Code Online (Sandbox Code Playgroud)
编辑:对不起!我误解了我的考试学习问题.列表的所有元素实际上都必须是列表.例如,
[[[1,2,3], [4,5,6]], [7,8,9]]而不是[1, [2,3,4]].