list - 在列表列表中追加列表 - Haskell

标签 list haskell

我正在尝试在 haskell 中执行一个函数。该函数的目的是将一个列表添加到现有的列表列表中。

[Int] -> [[Int]] -> [[Int]]

我希望它能像这样工作:

[1] -> [[2],[3]] -> [[2],[3],[1]]

我想知道如何继续做到这一点。现有的包含函数可以做到这一点吗?

最佳答案

您可以将元素 [1] 包装在单例列表中,然后将两个列表附加 (++) :: [a] -> [a] -> [a] 。所以你可以通过以下方式实现这样的功能:

addlast :: a -> [a] -> [a]
addlast x ys = ys ++ [x]
然而,(++) 函数通常需要左操作数元素数量的线性时间(因此 ys),这使得计算成本很高。因此,如果顺序不重要,最好将其添加到列表中。

extra package [Hackage] ,您可以使用snoc :: [a] -> a -> [a] 。在这种情况下,这就是 snoc 的“翻转”版本:

import Data.List.Extra(<b>snoc</b>)

addlast :: a -> [a] -> [a]
addlast = flip <b>snoc</b>

关于list - 在列表列表中追加列表 - Haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61525560/

相关文章:

python - 直接从返回的函数列表扩展列表

python - 批量更新 Python 列表的一部分

haskell - 有没有办法使用类型级模式匹配而不是定义类型系列

haskell - 如何正确选择连接哪个USB设备?

haskell - 代表性双仿函数的不动点

haskell - yesod-sqlite 模板中的 "import Database.Persist as X hiding (get)"是如何工作的

jQuery UI Sortable 下推项目

python - 为什么在循环变量使用相同名称时列表会被最后一项覆盖?

python - 如何按列对二维列表进行排序

haskell - 功能性香蕉旅行者游戏 - 有趣而疯狂