假设我有一个列表 [0,1,2,3],并且我想要一个包含元素 [(0,1), (1,2), (2,3)] 的新列表。 Haskell 中有执行此操作的函数吗?
最佳答案
您可以使其与 zip
一起使用,您可以将列表和该列表的尾部传递给它。例如,使用模式匹配:
f :: [a] -> [(a, a)]
f [] = []
f xa@(_:xs) = zip xa xs
或使用 tail :: [a] -> [a]
:
f :: [a] -> [(a, a)]
f xs = zip xs (tail xs)
即使对于空列表,上述内容也将起作用,因为 zip
将首先在第一个列表上进行模式匹配,如果该列表已用尽,它将不会查看第二个列表。
或者应用风格:
f :: [a] -> [(a, a)]
f = zip <*> tail
关于haskell - Haskell 中是否有一个函数可以按以下方式对列表的元素进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60354247/