list - 将列表附加到 Haskell 中的列表列表中?

标签 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]]?

最佳答案

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

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/

相关文章:

c# - 向 2 个不同的列表框显示信息 - 使用树

list - Scala:从第一个非零元素切分列表

haskell - 尝试在两个字符串中查找第一个不同字符时出现非详尽模式错误

list - Haskell获取IO列表元素

haskell - 允许相等值位于自平衡二叉树两侧的缺点?

haskell - 在 Haskell 中表示流程图指定的算法

database - Yesod 从数据库中获取一对多关系

python - 如何在 python 中创建相同元组的列表

python - 根据列表从文件夹导入图像 - python

c# - 非 Linq 检查列表项的方法是相同的