filter p xs = [ x | x <- xs, p x]
>>> filter odd [1, 2, 3] [1,3]
>>> filter (\l -> length l > 3) ["Hello", ", ", "World", "!"] ["Hello","World"]
>>> filter (/= 3) [1, 2, 3, 4, 3, 2, 1] [1,2,4,2,1]
filter = ( mfilter :: (a -> Bool) -> [a] -> [a] )
>>> mfilter odd (Just 1) Just 1 >>> mfilter odd (Just 2) Nothing