Portability  portable 

Stability  provisional 
Maintainer  julian.fleischer@fuberlin.de 
Safe Haskell  Safe 
Haskell extra utility functions. Best imported by import qualified Haskell.X as X
.
 exhaustively :: Eq a => (a > a) > a > a
 exhaustivelyBy :: (a > a > Bool) > (a > a) > a > a
 exhaustivelyM :: (Eq a, Monad m) => (a > m a) > a > m a
 exhaustivelyByM :: Monad m => (a > a > Bool) > (a > m a) > a > m a
 uniqSort :: Ord a => [a] > [a]
 aggregateBy :: (a > a > Ordering) > [a] > [[a]]
 aggregate :: Ord a => [a] > [[a]]
 aggregateAL :: Ord a => [(a, b)] > [(a, [b])]
 tr :: Eq a => a > a > [a] > [a]
 count4 :: [[[[a]]]] > Int
 count3 :: [[[a]]] > Int
 count2 :: [[a]] > Int
 count1 :: [a] > Int
 segment3 :: Int > [[[a]]] > [[a]]
 segment2 :: Int > [[a]] > [[a]]
 breakLast :: [a] > ([a], a)
 uneither :: Either a a > a
 data Version = Version {
 versionBranch :: [Integer]
 versionTags :: [String]
 parseVersion :: String > [(Version, String)]
Documentation
exhaustively :: Eq a => (a > a) > a > aSource
Apply a function exhaustively.
exhaustivelyBy :: (a > a > Bool) > (a > a) > a > aSource
Apply a function exhaustively.
exhaustivelyM :: (Eq a, Monad m) => (a > m a) > a > m aSource
Apply a monadic function exhaustively.
exhaustivelyByM :: Monad m => (a > a > Bool) > (a > m a) > a > m aSource
Apply a monadic function exhaustively.
uniqSort :: Ord a => [a] > [a]Source
Sort a list and leave out duplicates. Like nub . sort
but faster.
aggregateBy :: (a > a > Ordering) > [a] > [[a]]Source
Sort, then group
aggregateAL :: Ord a => [(a, b)] > [(a, [b])]Source
Aggregate an association list, such that keys become unique.
(c)
tr :: Eq a => a > a > [a] > [a]Source
Replace all occurences of a specific thing in a list of things another thing.
segment3 :: Int > [[[a]]] > [[a]]Source
Segments the elements of a 3 levels deep list such that the segments contain at least the specified amount of elements, without breaking apart any subsegments.
segment2 :: Int > [[a]] > [[a]]Source
Segments the elements of a 2 levels deep list such that the segments contain at least the specified amount of elements, without breaking apart any subsegments.
uneither :: Either a a > aSource
If an Either contains the same types in Left and Right, unify it by dropping the Either wrapper.
Version  

parseVersion :: String > [(Version, String)]Source