我知道如何获得单对first (x:_) = x
但如何获取对列表并返回每个第一项的列表?我是否使用循环或是否有其他语法?
[(1,2),(3,4),(5,6)] gives [1,3,5]
答案 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)