
31 Oct
2007
31 Oct
'07
9:29 a.m.
Hi there. I recently find myself missing Data.Set.mapMaybe. This function is implemented for Data.Map.Map, but is strangely missing from Data.Set.mapMaybe. I believe it could be implemented using Data.Foldable, but not as efficiently. The obvious implementation would be: mapMaybe :: (Ord a, Ord b) => (a -> Maybe b) -> Set a -> Set b mapMaybe f Tip = Tip mapMaybe f (Bin _ x l r) = case f x of Nothing -> merge (mapMaybe f l) (mapMaybe f r) Just y -> union y (mapMaybe f l) (mapMaybe f r) Any comments? Preliminary deadline: Nov 21, 2007 (3 weeks)