Haskell "concat" список кортежей, использующий только списки - PullRequest
0 голосов
/ 06 мая 2018

Как изменить список кортежей, например

[(5,6),(7,8),(9,10)]

в обычный список, например

[5,6,7,8,9,10]

через списки и без concat?

Я пробовал это:

[ [y, z] | xs <- [(1,2),(3,4)], y <- fst(xs), z <- snd(xs) ]

1 Ответ

0 голосов
/ 06 мая 2018

Чтобы сгладить любой список с пониманием списка, форма всегда одинакова. Возьмите несколько элементов из источника по одному.

Составления списков, например функции, позволяющие вам указать и точный шаблон источника, кортежа или списка.

Ваша функция не представлена ​​в виде кратных по одному, поэтому ее исправление никогда не даст вам того, что вы хотите. Это, по крайней мере, потребует использования concat для объединения выходных данных.

Вот форма понимания списка сглаживания

[ n |(a,b)<-[(1,2),(3,4),(5,6)],n <-[a,b]]

a и b по одному принимаются n, чтобы сгладить.

...