filter p xs = [ x | x <- xs, p x]
>>> filter odd [1, 2, 3] [1,3]
>>> takeWhile (< 3) [1,2,3,4,1,2,3,4] [1,2] >>> takeWhile (< 9) [1,2,3] [1,2,3] >>> takeWhile (< 0) [1,2,3] []
>>> dropWhile (< 3) [1,2,3,4,5,1,2,3] [3,4,5,1,2,3] >>> dropWhile (< 9) [1,2,3] [] >>> dropWhile (< 0) [1,2,3] [1,2,3]