将列表添加到Haskell中的列表列表中?

Stu*_*e75 2 haskell list

我在相关文档中找到的所有内容都是++和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]]?

Rei*_*chs 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:[].