Hi Michael Data.List.partition - from the docs... partition :: (a -> Bool) -> [a] -> ([a], [a]) Source The partition function takes a predicate a list and returns the pair of lists of elements which do and do not satisfy the predicate, respectively; i.e., partition p xs == (filter p xs, filter (not . p) xs)