filter -package:Cabal -package:unordered-containers -package:base package:base-compat

filter p xs removes any elements from xs that do not satisfy p.
This generalizes the list-based filter function.
Direct MonadPlus equivalent of filter.


The filter function is just mfilter specialized to the list monad:
filter = ( mfilter :: (a -> Bool) -> [a] -> [a] )
An example using mfilter with the Maybe monad:
>>> mfilter odd (Just 1)
Just 1
>>> mfilter odd (Just 2)