我在文档中所能找到的所有相关内容都是++ 和 concat。
一开始我以为执行以下操作会给我想要的东西:
[1, 3, 4] ++ [4, 5, 6]
但如您所知,它只会给出 [1, 2, 3, 4, 5, 6]。
我需要做什么才能接收 [1, 2, 3] 和 [4, 5, 6] 并退出 [[1, 2, 3], [4, 5, 6]]?
最佳答案
如评论中所述,将两个列表组合成一个新列表的函数可以定义为:
combine :: [a] -> [a] -> [[a]]
combine xs ys = [xs,ys]
不能多次应用此函数来创建任意数量列表的列表。这样的函数将采用单个列表和列表列表,并将单个列表添加到列表列表中,因此它的类型为:
push :: [a] -> [[a]] -> [[a]]
不过,这只是 (:)
:
push = (:)
正如评论中提到的,值 [x,y]
也可以写成 x : y : []
.1 因为这两种情况都可以用 (:)
完成,我猜你真正想要使用的是 (:)
,有时会使用 []
有时会放到非空列表中。
1 事实上,[x,y]
就是 syntactic sugar对于 x:y:[]
。
关于list - 将列表附加到 Haskell 中的列表列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28284836/