[a] -> (a -> Bool) -> ([a], [a])

break :: (a -> Bool) -> [a] -> ([a], [a])
base Prelude, base Data.List
break, applied to a predicate p and a list xs, returns a tuple (possibly empty) of xs of elements that do not satisfy p and second element is the remainder of the list: > break (> 3) [1,2,3,4,1,2,3,4] == ([1,2,3],[4,1,2,3,4]) > break (< 9) [1,2,3] == ([],[1,2,3]) > break (> 9) [1,2,3] == ([1,2,3],[]) break p is equivalent to span (not . p).
span :: (a -> Bool) -> [a] -> ([a], [a])
base Prelude, base Data.List
span, applied to a predicate p and a list xs, returns a tuple of xs of elements that satisfy p and second element is the remainder of the list: > span (< 3) [1,2,3,4,1,2,3,4] == ([1,2],[3,4,1,2,3,4]) > span (< 9) [1,2,3] == ([1,2,3],[]) > span (< 0) [1,2,3] == ([],[1,2,3]) span p xs is equivalent to (takeWhile p xs, dropWhile p xs)
partition :: (a -> Bool) -> [a] -> ([a], [a])
base Data.List
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)