リストとメイプを同時にマップしてフラット化できるコードを探しています。私はthis topicに、このようなflatMap機能が見つかりました:フラットマップリストとメイプル
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]
両方のリストとMaybes(そしておそらく他のいくつかのタイプ)を扱うことができ、単一の組み込み関数はありますか?
あなたは、あなたが使用することができます持っているものを知っている場合は、[たぶん] [ 'catMaybes :: - > [A]']( http://www.haskell.org/hoogle/?hoogle=catMaybes)または['concat :: [[a]] - > [a]'](http://www.haskell.org/hoogle/?hoogle = concat)を '' map ::(a - > b) - > [a] - > [b] '](http://www.haskell.org/hoogle/?hoogle=map) – rampion
Or = <<、リストバージョンの場合 –