我是 haskell 的新手。我想知道我是否可以只使用 map 和 concat 来做以下事情?
[ (x,y+z) | x<-[1..10], y<-[1..x], z<-[1..y] ]
最佳答案
是的:
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]
关于Haskell 列表理解映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7512083/