filter -package:base -package:hedgehog -package:ghc -package:pipes package:base-compat

filter p xs removes any elements from xs that do not satisfy p.
filter, applied to a predicate and a list, returns the list of those elements that satisfy the predicate; i.e.,
filter p xs = [ x | x <- xs, p x]
>>> filter odd [1, 2, 3]
[1,3]
This generalizes the list-based filter function.
Direct MonadPlus equivalent of filter.

Examples

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)
Nothing