Понимание списка Хаскелла на карте - PullRequest
1 голос
/ 22 сентября 2011

Я новичок в Haskell.Мне было интересно, могу ли я сделать следующее, используя только map и concat?

                 [ (x,y+z) | x<-[1..10], y<-[1..x], z<-[1..y] ]

1 Ответ

5 голосов
/ 22 сентября 2011

Да

concat $ concat $ map (\x -> map (\y -> map (\z -> (x,y+z)) [1..y]) [1..x]) [1..10]

Хотя официальный перевод использует concatMap:

concatMap (\x -> concatMap (\y -> concatMap (\z -> [(x,y+z)]) [1..y]) [1..x]) [1..10]
...