-- general list processing forall :: (a -> Bool) -> [a] -> Bool exists :: (a -> Bool) -> [a] -> Bool nOfThem :: Int -> a -> [a] lengthExceeds :: [a] -> Int -> Bool isSingleton :: [a] -> Bool --paranoid zip'ing (equal length lists) zipEqual :: [a] -> [b] -> [(a,b)] zipWithEqual :: String -> (a->b->c) -> [a]->[b]->[c] zipWith3Equal :: String -> (a->b->c->d) -> [a]->[b]->[c]->[d] zipWith4Equal :: String -> (a->b->c->d->e) -> [a]->[b]->[c]->[d]->[e] -- lazy in second argument zipLazy :: [a] -> [b] -> [(a,b)] mapAndUnzip :: (a -> (b, c)) -> [a] -> ([b], [c]) mapAndUnzip3 :: (a -> (b, c, d)) -> [a] -> ([b], [c], [d]) -- prefix and suffix matching on lists of characters. startsWith :: {-prefix-}String -> String -> Maybe String endsWith :: {-suffix-}String -> String -> Maybe String -- association lists assoc :: Eq a => String -> [(a, b)] -> a -> b -- duplicate handling hasNoDups :: Eq a => [a] -> Bool equivClasses :: (a -> a -> Ordering) -> [a] -> [[a]] runs :: (a -> a -> Bool) -> [a] -> [[a]] removeDups :: (a -> a -> Ordering) -> [a] -> ([a], [[a]]) -- sorting (don't complain of no choice...) quicksort :: (a -> a -> Bool) -> [a] -> [a] sortLt :: (a -> a -> Bool) -> [a] -> [a] stableSortLt :: (a -> a -> Bool) -> [a] -> [a] mergesort :: (a -> a -> _CMP_TAG) -> [a] -> [a] mergeSort :: Ord a => [a] -> [a] naturalMergeSort :: Ord a => [a] -> [a] mergeSortLe :: Ord a => [a] -> [a] naturalMergeSortLe :: Ord a => [a] -> [a] -- transitive closures transitiveClosure :: (a -> [a]) -- Successor function -> (a -> a -> Bool) -- Equality predicate -> [a] -> [a] -- The transitive closure -- accumulating (Left, Right, Bi-directional) mapAccumL :: (acc -> x -> (acc, y)) -- Function of elt of input list and -- accumulator, returning new accumulator and -- elt of result list -> acc -- Initial accumulator -> [x] -- Input list -> (acc, [y]) -- Final accumulator and result list mapAccumR :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y]) mapAccumB :: (accl -> accr -> x -> (accl, accr,y)) -> accl -> accr -> [x] -> (accl, accr, [y]) --list comparison with explicit element comparer. cmpList :: (a -> a -> Ordering) -> [a] -> [a] -> Ordering -- pairs applyToPair :: ((a -> c), (b -> d)) -> (a, b) -> (c, d) applyToFst :: (a -> c) -> (a, b) -> (c, b) applyToSnd :: (b -> d) -> (a, b) -> (a, d) foldPair :: (a->a->a, b->b->b) -> (a, b) -> [(a, b)] -> (a, b) unzipWith :: (a -> b -> c) -> [(a, b)] -> [c]

Go to the first, previous, next, last section, table of contents.