【发布时间】:2012-03-17 19:06:09
【问题描述】:
我正在寻找可以同时映射和展平列表和可能的代码。我在this topic找到了这样一个flatMap-function:
flatMap :: (t -> [a]) -> [t] -> [a]
flatMap _ [] = []
flatMap f (x:xs) = f x ++ flatMap f xs
这很好用:
> flatMap id [[],[1,2],[3],[],[4,5,6]]
[1,2,3,4,5,6]
唯一的问题是它不适用于Maybes。相反,我必须使用Data.Maybe.mapMaybe:
> Data.Maybe.mapMaybe id [Just 1, Nothing, Just 2, Just 3, Nothing]
[1,2,3]
是否有一个内置函数可以同时处理 Lists 和 Maybes(可能还有一些其他类型)?
【问题讨论】:
标签: haskell