2013-12-08 6 views

ответ

12

Написать одну функцию, чтобы преобразовать пару в список:

pairToList :: (a, a) -> [a] 
pairToList (x,y) = [x,y] 

Тогда вы только должны mappairToList:

tuplesToList :: [(a,a)] -> [[a]] 
tuplesToList = map pairToList 

Или в одной строке:

map (\(x,y) -> [x,y]) 
+0

Новый вопрос - что такое \ for? –

+1

@AbhijitSarkar Это просто синтаксис для определения лямбда. – Ankur

+0

@AbhijitSarkar Новая версия должна быть более полезной. – Zeta

7

List comprehension версия:

[[x,y] | (x,y) <- [("m","n"),("p","q"),("r","s")]] 
9

Использование lens вы можете сделать это сжато для произвольной длиной однородных кортежей:

import Control.Lens 

map (^..each) [("m","n"),("p","q"),("r","s")] -- [["m","n"],["p","q"],["r","s"]] 
map (^..each) [(1, 2, 3)] -- [[1, 2, 3]] 

Примечания хотя, что lens библиотеки является сложной и довольно начинающим недружелюбно.

Смежные вопросы