Haskell:打印列表元素

时间:2016-08-25 17:24:11

标签: haskell

我有一份清单 let a = [1,2,3,4]

我想一次提取2个元素来执行计算。谁能告诉我这是如何实现的?我是Haskell的新手。

我知道take 2 a。但是我如何将它放在一个循环中,以便一次提取2个元素。我很困惑。

2 个答案:

答案 0 :(得分:5)

这是一个例子。您(或应该)熟悉map函数:

map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs

在这里,您可能有一个带有两个参数的函数,并且希望一次将它应用于列表中的两个元素。这里的函数mapTwo的行为类似于map,但具有双参数函数。为简单起见,我们假设列表中包含偶数个元素。

mapTwo :: (a -> a -> b) -> [a] -> [b]
mapTwo f [] = []
mapTwo f (x1:x2:xs) = f x1 x2 : mapTwo f xs

答案 1 :(得分:4)

您可以在您感兴趣的元素上编写自己的递归函数和模式匹配:

f (a:b:list) = doSomeThingWith a b : f list

确保在[][a]个案件中正确匹配。