Превратить список кортежей в список его элементов с пониманием списка - PullRequest
0 голосов
/ 19 сентября 2018

В настоящее время я готовлюсь к экзамену в октябре и сталкиваюсь с проблемой, которая, похоже, не может найти хорошее решение.

Я хочу прочитать список кортежей целых чисел, например:[(1,2), (3,4), (5,6), ..] и хотите, чтобы понимание списка вернулось [1,2,3,4,5,6, ..]

Следующее работает просто отлично, но я хочу, чтобы оно было в одном списке.

func :: [(Integer, Integer)] -> [Integer]
func xs = concat [ [x,y] | (x,y) <- xs ]

Как я могу заставить эту работу работать?

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете использовать дополнительную итерацию в правой части понимания списка, например:

func :: [(a, a)] -> [a]
func xs = [ xi | (x1, x2) <- xs, <b>xi <- [x1, x2]</b> ]

Таким образом, мы пишем понимание списка так, как люди пишут вложенный цикл в императивном языке программирования.

...