列表中每对的第一个元素

Cha*_*ase -4 haskell

我知道如何获得一对的第一个元素 first (x:_) = x

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

[(1,2),(3,4),(5,6)] gives [1,3,5]
Run Code Online (Sandbox Code Playgroud)

Rod*_*iro 9

在函数式语言中,人们使用递归或高阶函数(如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)

玩得开心!