我有一份清单
let a = [1,2,3,4]
我想一次提取2个元素来执行计算.谁能告诉我这是如何实现的?我是Haskell的新手.
我知道take 2 a.但是我如何将它放在一个循环中,以便一次提取2个元素.我很迷惑.
这是一个例子.您(或应该)熟悉该map功能:
map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
Run Code Online (Sandbox Code Playgroud)
在这里,您可能有一个带有两个参数的函数,并且希望一次将它应用于列表中的两个元素.这是一个mapTwo行为类似map但具有双参数函数的函数.为简单起见,我们假设列表具有偶数个元素.
mapTwo :: (a -> a -> b) -> [a] -> [b]
mapTwo f [] = []
mapTwo f (x1:x2:xs) = f x1 x2 : mapTwo f xs
Run Code Online (Sandbox Code Playgroud)