
17 Oct
2017
17 Oct
'17
5:54 a.m.
On Tue, 17 Oct 2017, Henning Thielemann wrote:
ordNub could be implemented using Traversable:
catMaybes (traverse ??? xs :: [Maybe a])
You would only need a generalization for catMaybes like mfilter.
ordNub :: (Traversable f, MonadPlus f, Ord a) => f a -> f a ordNub = join . snd . Trav.mapAccumL (\s x -> if Set.member x s then (s,mzero) else (Set.insert x s, return x)) Set.empty We don't need mplus, only Monad and mzero.