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

时间:2015-02-02 19:01:46

标签: list haskell

我能够在相关的文档中找到++和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]]需要做什么?

1 个答案:

答案 0 :(得分:5)

如评论中所述,将两个列表合并为一个新列表的函数可以定义为:

combine :: [a] -> [a] -> [[a]]
combine xs ys = [xs,ys]

此功能无法多次应用以创建任意数量列表的列表。这样的函数将采用单个列表和列表列表,它会将单个列表添加到列表列表中,因此它将具有类型:

push :: [a] -> [[a]] -> [[a]]

这只是(:),但是:

push = (:)

正如评论中所提到的,值[x,y]也可以写成x : y : [] 1 因为这两种情况都可以用(:)来完成,我会猜测你真正想要使用的是(:),有时会进入[],有时进入非空列表。


1 事实上,[x,y] x:y:[]仅为{{1}}。