列表中每对的第一个元素

时间:2016-02-26 21:39:04

标签: haskell

我知道如何获得单对first (x:_) = x

的第一个元素

但如何获取对列表并返回每个第一项的列表?我是否使用循环或是否有其他语法?

[(1,2),(3,4),(5,6)] gives [1,3,5]

2 个答案:

答案 0 :(得分:9)

在函数式语言中,人们确实使用递归或高阶函数(如map或fold)迭代列表。下面,我介绍一些方法:

1 - 列表理解:

firsts :: [(a,b)] -> [a]
firsts xs = [x | (x,_) <- xs]

2 - 使用地图

firsts = map fst 

3 - 使用foldr

firsts = foldr (\x ac -> (fst x) : ac) [] 

玩得开心!

答案 1 :(得分:0)

monad的乐趣:

firsts xs = do x <- xs; return (fst x)