我正在尝试在 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/