我在相关文档中找到的所有内容都是++和concat.
我一开始认为做以下事情会给我想要的东西:
[1, 3, 4] ++ [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
但正如你所知,只给[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]
Run Code Online (Sandbox Code Playgroud)
此功能无法多次应用以创建任意数量的列表的列表.这样的函数将采用单个列表和列表列表,它会将单个列表添加到列表列表中,因此它将具有以下类型:
push :: [a] -> [[a]] -> [[a]]
Run Code Online (Sandbox Code Playgroud)
但这只是(:):
push = (:)
Run Code Online (Sandbox Code Playgroud)
正如评论中所提到的,值[x,y]也可以写成x : y : [].1由于两种情况都可以完成(:),我猜你真正想要使用的是(:),有时[]会进入非空列表.
1其实,[x,y]只是语法糖的x:y:[].