Haskell列表理解到地图

时间:2011-09-22 08:50:43

标签: haskell map list-comprehension concat

我是哈斯凯尔的新手。我想知道如果我只使用map和concat可以做以下事情吗?

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

1 个答案:

答案 0 :(得分:5)

是:

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

虽然official translation使用了concatMap:

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