The
mapMaybe function is a version of
map which can
throw out elements. In particular, the functional argument returns
something of type
Maybe b. If this is
Nothing,
no element is added on to the result list. If it is
Just
b, then
b is included in the result list.
Examples
Using
mapMaybe f x is a shortcut for
catMaybes $ map f x in most cases:
>>> import Text.Read ( readMaybe )
>>> let readMaybeInt = readMaybe :: String -> Maybe Int
>>> mapMaybe readMaybeInt ["1", "Foo", "3"]
[1,3]
>>> catMaybes $ map readMaybeInt ["1", "Foo", "3"]
[1,3]
If we map the
Just constructor, the entire list should be
returned:
>>> mapMaybe Just [1,2,3]
[1,2,3]