我知道如何获得一对的第一个元素 first (x:_) = x
但是如何获取对列表并返回每个第一项的列表?我是否使用循环或是否有其他语法?
[(1,2),(3,4),(5,6)] gives [1,3,5]
Run Code Online (Sandbox Code Playgroud)
在函数式语言中,人们使用递归或高阶函数(如map或fold)迭代列表.下面,我介绍一些方法:
1 - 列表理解:
firsts :: [(a,b)] -> [a]
firsts xs = [x | (x,_) <- xs]
Run Code Online (Sandbox Code Playgroud)
2 - 使用地图
firsts = map fst
Run Code Online (Sandbox Code Playgroud)
3 - 使用foldr
firsts = foldr (\x ac -> (fst x) : ac) []
Run Code Online (Sandbox Code Playgroud)
玩得开心!