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]