2016-02-26 2 views
-4

Я знаю, как получить первый элемент одной пары first (x:_) = xпервые элементы каждой пары из списка

но как я беру список пар и возвращает список каждого первого элемента? Использую ли я цикл или есть ли другой синтаксис?

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

Два слова: 'карта fst' –

+3

Ваш' first' неправильно. – Zeta

ответ

9

В функциональных языках один использует функции рекурсии или высокого порядка, такие как карта или фолд, чтобы перебирать список. Ниже я привожу некоторые способы сделать это:

1 - Список понимание:

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

2 - Использование карты

firsts = map fst 

3 - Использование foldr

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

Кушайте весело!

0

Аферисты монад:

firsts xs = do x <- xs; return (fst x) 
Смежные вопросы