ListLike-1.0.1: Generic support for list-like structuresSource codeContentsIndex
Data.ListLike
Portabilityportable
Stabilityprovisional
MaintainerJohn Goerzen <jgoerzen@complete.org>
Contents
Introduction
Creation & Basic Functions
List transformations
Conversions
Reducing lists (folds), from FoldableLL
Special folds
Building lists
Scans
Accumulating maps
Infinite lists
Unfolding
Sublists
Extracting sublists
Predicates
Searching lists
Searching by equality
Searching with a predicate
Indexing lists
Zipping and unzipping lists
Monadic Operations
Input and Output
Special lists
Strings
"Set" operations
Ordered lists
Generalized functions
The "By" operations
User-supplied equality (replacing an Eq context)
User-supplied comparison (replacing an Ord context)
The "generic" operations
Notes on specific instances
Lists
Arrays
Maps
ByteStrings
Base Typeclasses
The ListLike class
The FoldableLL class
The StringLike class
The InfiniteListLike class
Description

Generic operations over list-like structures

Written by John Goerzen, jgoerzen@complete.org

Please start with the introduction at Data.ListLike#intro.

Synopsis
empty :: ListLike full item => full
singleton :: ListLike full item => item -> full
cons :: ListLike full item => item -> full -> full
snoc :: ListLike full item => full -> item -> full
append :: ListLike full item => full -> full -> full
head :: ListLike full item => full -> item
last :: ListLike full item => full -> item
tail :: ListLike full item => full -> full
init :: ListLike full item => full -> full
null :: ListLike full item => full -> Bool
length :: ListLike full item => full -> Int
map :: (ListLike full item, ListLike full' item') => (item -> item') -> full -> full'
rigidMap :: ListLike full item => (item -> item) -> full -> full
reverse :: ListLike full item => full -> full
intersperse :: ListLike full item => item -> full -> full
toList :: ListLike full item => full -> [item]
fromList :: ListLike full item => [item] -> full
fromListLike :: (ListLike full item, ListLike full' item) => full -> full'
foldl :: FoldableLL full item => (a -> item -> a) -> a -> full -> a
foldl' :: FoldableLL full item => (a -> item -> a) -> a -> full -> a
foldl1 :: FoldableLL full item => (item -> item -> item) -> full -> item
foldr :: FoldableLL full item => (item -> b -> b) -> b -> full -> b
foldr' :: FoldableLL full item => (item -> b -> b) -> b -> full -> b
foldr1 :: FoldableLL full item => (item -> item -> item) -> full -> item
concat :: (ListLike full item, ListLike full' full, Monoid full) => full' -> full
concatMap :: (ListLike full item, ListLike full' item') => (item -> full') -> full -> full'
rigidConcatMap :: ListLike full item => (item -> full) -> full -> full
and :: ListLike full Bool => full -> Bool
or :: ListLike full Bool => full -> Bool
any :: ListLike full item => (item -> Bool) -> full -> Bool
all :: ListLike full item => (item -> Bool) -> full -> Bool
sum :: (Num a, ListLike full a) => full -> a
product :: (Num a, ListLike full a) => full -> a
maximum :: (ListLike full item, Ord item) => full -> item
minimum :: (ListLike full item, Ord item) => full -> item
fold :: (FoldableLL full item, Monoid item) => full -> item
foldMap :: (FoldableLL full item, Monoid m) => (item -> m) -> full -> m
iterate :: InfiniteListLike full item => (item -> item) -> item -> full
repeat :: InfiniteListLike full item => item -> full
replicate :: ListLike full item => Int -> item -> full
cycle :: InfiniteListLike full item => full -> full
take :: ListLike full item => Int -> full -> full
drop :: ListLike full item => Int -> full -> full
splitAt :: ListLike full item => Int -> full -> (full, full)
takeWhile :: ListLike full item => (item -> Bool) -> full -> full
dropWhile :: ListLike full item => (item -> Bool) -> full -> full
span :: ListLike full item => (item -> Bool) -> full -> (full, full)
break :: ListLike full item => (item -> Bool) -> full -> (full, full)
group :: (ListLike full item, ListLike full' full, Eq item) => full -> full'
inits :: (ListLike full item, ListLike full' full) => full -> full'
tails :: (ListLike full item, ListLike full' full) => full -> full'
isPrefixOf :: (ListLike full item, Eq item) => full -> full -> Bool
isSuffixOf :: (ListLike full item, Eq item) => full -> full -> Bool
isInfixOf :: (ListLike full item, Eq item) => full -> full -> Bool
elem :: (ListLike full item, Eq item) => item -> full -> Bool
notElem :: (ListLike full item, Eq item) => item -> full -> Bool
find :: ListLike full item => (item -> Bool) -> full -> Maybe item
filter :: ListLike full item => (item -> Bool) -> full -> full
partition :: ListLike full item => (item -> Bool) -> full -> (full, full)
index :: ListLike full item => full -> Int -> item
elemIndex :: (ListLike full item, Eq item) => item -> full -> Maybe Int
elemIndices :: (ListLike full item, Eq item, ListLike result Int) => item -> full -> result
findIndex :: ListLike full item => (item -> Bool) -> full -> Maybe Int
findIndices :: (ListLike full item, ListLike result Int) => (item -> Bool) -> full -> result
zip :: (ListLike full item, ListLike fullb itemb, ListLike result (item, itemb)) => full -> fullb -> result
zipWith :: (ListLike full item, ListLike fullb itemb, ListLike result resultitem) => (item -> itemb -> resultitem) -> full -> fullb -> result
unzip :: (ListLike full (itema, itemb), ListLike ra itema, ListLike rb itemb) => full -> (ra, rb)
sequence :: (ListLike full item, Monad m, ListLike fullinp (m item)) => fullinp -> m full
sequence_ :: (Monad m, ListLike mfull (m item)) => mfull -> m ()
mapM :: (ListLike full item, Monad m, ListLike full' item') => (item -> m item') -> full -> m full'
rigidMapM :: (ListLike full item, Monad m) => (item -> m item) -> full -> m full
mapM_ :: (ListLike full item, Monad m) => (item -> m b) -> full -> m ()
class ListLike full item => ListLikeIO full item | full -> item where
hGetLine :: Handle -> IO full
hGetContents :: Handle -> IO full
hGet :: Handle -> Int -> IO full
hGetNonBlocking :: Handle -> Int -> IO full
hPutStr :: Handle -> full -> IO ()
hPutStrLn :: Handle -> full -> IO ()
getLine :: IO full
getContents :: IO full
putStr :: full -> IO ()
putStrLn :: full -> IO ()
interact :: (full -> full) -> IO ()
readFile :: FilePath -> IO full
writeFile :: FilePath -> full -> IO ()
appendFile :: FilePath -> full -> IO ()
toString :: StringLike s => s -> String
fromString :: StringLike s => String -> s
lines :: (StringLike s, ListLike full s) => s -> full
words :: (StringLike s, ListLike full s) => s -> full
nub :: (ListLike full item, Eq item) => full -> full
delete :: (ListLike full item, Eq item) => item -> full -> full
deleteFirsts :: (ListLike full item, Eq item) => full -> full -> full
union :: (ListLike full item, Eq item) => full -> full -> full
intersect :: (ListLike full item, Eq item) => full -> full -> full
sort :: (ListLike full item, Ord item) => full -> full
insert :: (ListLike full item, Ord item) => item -> full -> full
nubBy :: ListLike full item => (item -> item -> Bool) -> full -> full
deleteBy :: ListLike full item => (item -> item -> Bool) -> item -> full -> full
deleteFirstsBy :: ListLike full item => (item -> item -> Bool) -> full -> full -> full
unionBy :: ListLike full item => (item -> item -> Bool) -> full -> full -> full
intersectBy :: ListLike full item => (item -> item -> Bool) -> full -> full -> full
groupBy :: (ListLike full item, ListLike full' full, Eq item) => (item -> item -> Bool) -> full -> full'
sortBy :: (ListLike full item, Ord item) => (item -> item -> Ordering) -> full -> full
insertBy :: (ListLike full item, Ord item) => (item -> item -> Ordering) -> item -> full -> full
genericLength :: (ListLike full item, Num a) => full -> a
genericTake :: (ListLike full item, Integral a) => a -> full -> full
genericDrop :: (ListLike full item, Integral a) => a -> full -> full
genericSplitAt :: (ListLike full item, Integral a) => a -> full -> (full, full)
genericReplicate :: (ListLike full item, Integral a) => a -> item -> full
class (FoldableLL full item, Monoid full) => ListLike full item | full -> item where
empty :: full
singleton :: item -> full
cons :: item -> full -> full
snoc :: full -> item -> full
append :: full -> full -> full
head :: full -> item
last :: full -> item
tail :: full -> full
init :: full -> full
null :: full -> Bool
length :: full -> Int
map :: ListLike full' item' => (item -> item') -> full -> full'
rigidMap :: (item -> item) -> full -> full
reverse :: full -> full
intersperse :: item -> full -> full
concat :: (ListLike full' full, Monoid full) => full' -> full
concatMap :: ListLike full' item' => (item -> full') -> full -> full'
rigidConcatMap :: (item -> full) -> full -> full
any :: (item -> Bool) -> full -> Bool
all :: (item -> Bool) -> full -> Bool
maximum :: Ord item => full -> item
minimum :: Ord item => full -> item
replicate :: Int -> item -> full
take :: Int -> full -> full
drop :: Int -> full -> full
splitAt :: Int -> full -> (full, full)
takeWhile :: (item -> Bool) -> full -> full
dropWhile :: (item -> Bool) -> full -> full
span :: (item -> Bool) -> full -> (full, full)
break :: (item -> Bool) -> full -> (full, full)
group :: (ListLike full' full, Eq item) => full -> full'
inits :: ListLike full' full => full -> full'
tails :: ListLike full' full => full -> full'
isPrefixOf :: Eq item => full -> full -> Bool
isSuffixOf :: Eq item => full -> full -> Bool
isInfixOf :: Eq item => full -> full -> Bool
elem :: Eq item => item -> full -> Bool
notElem :: Eq item => item -> full -> Bool
find :: (item -> Bool) -> full -> Maybe item
filter :: (item -> Bool) -> full -> full
partition :: (item -> Bool) -> full -> (full, full)
index :: full -> Int -> item
elemIndex :: Eq item => item -> full -> Maybe Int
elemIndices :: (Eq item, ListLike result Int) => item -> full -> result
findIndex :: (item -> Bool) -> full -> Maybe Int
findIndices :: ListLike result Int => (item -> Bool) -> full -> result
sequence :: (Monad m, ListLike fullinp (m item)) => fullinp -> m full
mapM :: (Monad m, ListLike full' item') => (item -> m item') -> full -> m full'
rigidMapM :: Monad m => (item -> m item) -> full -> m full
mapM_ :: Monad m => (item -> m b) -> full -> m ()
nub :: Eq item => full -> full
delete :: Eq item => item -> full -> full
deleteFirsts :: Eq item => full -> full -> full
union :: Eq item => full -> full -> full
intersect :: Eq item => full -> full -> full
sort :: Ord item => full -> full
insert :: Ord item => item -> full -> full
toList :: full -> [item]
fromList :: [item] -> full
fromListLike :: ListLike full' item => full -> full'
nubBy :: (item -> item -> Bool) -> full -> full
deleteBy :: (item -> item -> Bool) -> item -> full -> full
deleteFirstsBy :: (item -> item -> Bool) -> full -> full -> full
unionBy :: (item -> item -> Bool) -> full -> full -> full
intersectBy :: (item -> item -> Bool) -> full -> full -> full
groupBy :: (ListLike full' full, Eq item) => (item -> item -> Bool) -> full -> full'
sortBy :: Ord item => (item -> item -> Ordering) -> full -> full
insertBy :: Ord item => (item -> item -> Ordering) -> item -> full -> full
genericLength :: Num a => full -> a
genericTake :: Integral a => a -> full -> full
genericDrop :: Integral a => a -> full -> full
genericSplitAt :: Integral a => a -> full -> (full, full)
genericReplicate :: Integral a => a -> item -> full
class FoldableLL full item | full -> item where
foldl :: (a -> item -> a) -> a -> full -> a
foldl' :: (a -> item -> a) -> a -> full -> a
foldl1 :: (item -> item -> item) -> full -> item
foldr :: (item -> b -> b) -> b -> full -> b
foldr' :: (item -> b -> b) -> b -> full -> b
foldr1 :: (item -> item -> item) -> full -> item
class StringLike s where
toString :: s -> String
fromString :: String -> s
lines :: ListLike full s => s -> full
words :: ListLike full s => s -> full
class ListLike full item => InfiniteListLike full item | full -> item where
iterate :: (item -> item) -> item -> full
repeat :: item -> full
cycle :: full -> full
Introduction

Welcome to ListLike.

This module provides abstractions over typical list operations. It is designed to let you freely interchange different ways to represent sequences of data. It works with lists, various types of ByteStrings, and much more.

In this module, you'll find generic versions of most of the functions you're used to using in the Prelude, Data.List, and System.IO. They carry the same names, too. Therefore, you'll want to be careful how you import the module. I suggest using:

import qualified ListLike as LL

Then, you can use LL.fold, LL.map, etc. to get the generic version of the functions you want. Alternatively, you can hide the other versions from Prelude and import specific generic functions from here, such as:

import Prelude hiding (map)
import ListLike (map)

The module Data.ListLike actually simply re-exports the items found in a number of its sub-modules. If you want a smaller subset of Data.ListLike, look at the documentation for its sub-modules and import the relevant one.

In most cases, functions here can act as drop-in replacements for their list-specific counterparts. They will use the same underlying implementations for lists, so there should be no performance difference.

You can make your own types instances of ListLike as well. For more details, see the notes for the ListLike typeclass.

Creation & Basic Functions
empty :: ListLike full item => fullSource
The empty list
singleton :: ListLike full item => item -> fullSource
Creates a single-element list out of an element
cons :: ListLike full item => item -> full -> fullSource
Like (:) for lists: adds an element to the beginning of a list
snoc :: ListLike full item => full -> item -> fullSource
Adds an element to the *end* of a ListLike.
append :: ListLike full item => full -> full -> fullSource
Combines two lists. Like (++).
head :: ListLike full item => full -> itemSource
Extracts the first element of a ListLike.
last :: ListLike full item => full -> itemSource
Extracts the last element of a ListLike.
tail :: ListLike full item => full -> fullSource
Gives all elements after the head.
init :: ListLike full item => full -> fullSource
All elements of the list except the last one. See also inits.
null :: ListLike full item => full -> BoolSource
Tests whether the list is empty.
length :: ListLike full item => full -> IntSource
Length of the list. See also genericLength.
List transformations
map :: (ListLike full item, ListLike full' item') => (item -> item') -> full -> full'Source
Apply a function to each element, returning any other valid ListLike. rigidMap will always be at least as fast, if not faster, than this function and is recommended if it will work for your purposes. See also mapM.
rigidMap :: ListLike full item => (item -> item) -> full -> fullSource
Like map, but without the possibility of changing the type of the item. This can have performance benefits for things such as ByteStrings, since it will let the ByteString use its native low-level map implementation.
reverse :: ListLike full item => full -> fullSource
Reverse the elements in a list.
intersperse :: ListLike full item => item -> full -> fullSource
Add an item between each element in the structure
Conversions
toList :: ListLike full item => full -> [item]Source
Converts the structure to a list. This is logically equivolent to fromListLike, but may have a more optimized implementation.
fromList :: ListLike full item => [item] -> fullSource
Generates the structure from a list.
fromListLike :: (ListLike full item, ListLike full' item) => full -> full'Source
Converts one ListLike to another. See also toList. Default implementation is fromListLike = map id
Reducing lists (folds), from FoldableLL
foldl :: FoldableLL full item => (a -> item -> a) -> a -> full -> aSource
Left-associative fold
foldl' :: FoldableLL full item => (a -> item -> a) -> a -> full -> aSource
Strict version of foldl.
foldl1 :: FoldableLL full item => (item -> item -> item) -> full -> itemSource
A variant of foldl with no base case. Requires at least 1 list element.
foldr :: FoldableLL full item => (item -> b -> b) -> b -> full -> bSource
Right-associative fold
foldr' :: FoldableLL full item => (item -> b -> b) -> b -> full -> bSource
Strict version of foldr
foldr1 :: FoldableLL full item => (item -> item -> item) -> full -> itemSource
Like foldr, but with no starting value
Special folds
concat :: (ListLike full item, ListLike full' full, Monoid full) => full' -> fullSource
Flatten the structure.
concatMap :: (ListLike full item, ListLike full' item') => (item -> full') -> full -> full'Source
Map a function over the items and concatenate the results. See also rigidConcatMap.
rigidConcatMap :: ListLike full item => (item -> full) -> full -> fullSource
Like concatMap, but without the possibility of changing the type of the item. This can have performance benefits for some things such as ByteString.
and :: ListLike full Bool => full -> BoolSource
Returns True if all elements are True
or :: ListLike full Bool => full -> BoolSource
Returns True if any element is True
any :: ListLike full item => (item -> Bool) -> full -> BoolSource
True if any items satisfy the function
all :: ListLike full item => (item -> Bool) -> full -> BoolSource
True if all items satisfy the function
sum :: (Num a, ListLike full a) => full -> aSource
The sum of the list
product :: (Num a, ListLike full a) => full -> aSource
The product of the list
maximum :: (ListLike full item, Ord item) => full -> itemSource
The maximum value of the list
minimum :: (ListLike full item, Ord item) => full -> itemSource
The minimum value of the list
fold :: (FoldableLL full item, Monoid item) => full -> itemSource
Combine the elements of a structure using a monoid. fold = foldMap id
foldMap :: (FoldableLL full item, Monoid m) => (item -> m) -> full -> mSource
Map each element to a monoid, then combine the results
Building lists
Scans
Accumulating maps
Infinite lists
iterate :: InfiniteListLike full item => (item -> item) -> item -> fullSource
An infinite list of repeated calls of the function to args
repeat :: InfiniteListLike full item => item -> fullSource
An infinite list where each element is the same
replicate :: ListLike full item => Int -> item -> fullSource
Generate a structure with the specified length with every element set to the item passed in. See also genericReplicate
cycle :: InfiniteListLike full item => full -> fullSource
Converts a finite list into a circular one
Unfolding
Sublists
Extracting sublists
take :: ListLike full item => Int -> full -> fullSource
Takes the first n elements of the list. See also genericTake.
drop :: ListLike full item => Int -> full -> fullSource
Drops the first n elements of the list. See also genericDrop
splitAt :: ListLike full item => Int -> full -> (full, full)Source
Equivalent to (take n xs, drop n xs). See also genericSplitAt.
takeWhile :: ListLike full item => (item -> Bool) -> full -> fullSource
Returns all elements at start of list that satisfy the function.
dropWhile :: ListLike full item => (item -> Bool) -> full -> fullSource
Drops all elements form the start of the list that satisfy the function.
span :: ListLike full item => (item -> Bool) -> full -> (full, full)Source
The equivalent of (takeWhile f xs, dropWhile f xs)
break :: ListLike full item => (item -> Bool) -> full -> (full, full)Source
The equivalent of span (not . f)
group :: (ListLike full item, ListLike full' full, Eq item) => full -> full'Source
Split a list into sublists, each which contains equal arguments. For order-preserving types, concatenating these sublists will produce the original list. See also groupBy.
inits :: (ListLike full item, ListLike full' full) => full -> full'Source
All initial segments of the list, shortest first
tails :: (ListLike full item, ListLike full' full) => full -> full'Source
All final segnemts, longest first
Predicates
isPrefixOf :: (ListLike full item, Eq item) => full -> full -> BoolSource
True when the first list is at the beginning of the second.
isSuffixOf :: (ListLike full item, Eq item) => full -> full -> BoolSource
True when the first list is at the beginning of the second.
isInfixOf :: (ListLike full item, Eq item) => full -> full -> BoolSource
True when the first list is wholly containted within the second
Searching lists
Searching by equality
elem :: (ListLike full item, Eq item) => item -> full -> BoolSource
True if the item occurs in the list
notElem :: (ListLike full item, Eq item) => item -> full -> BoolSource
True if the item does not occur in the list
Searching with a predicate
find :: ListLike full item => (item -> Bool) -> full -> Maybe itemSource
Take a function and return the first matching element, or Nothing if there is no such element.
filter :: ListLike full item => (item -> Bool) -> full -> fullSource
Returns only the elements that satisfy the function.
partition :: ListLike full item => (item -> Bool) -> full -> (full, full)Source
Returns the lists that do and do not satisfy the function. Same as (filter p xs, filter (not . p) xs)
Indexing lists
index :: ListLike full item => full -> Int -> itemSource
The element at 0-based index i. Raises an exception if i is out of bounds. Like (!!) for lists.
elemIndex :: (ListLike full item, Eq item) => item -> full -> Maybe IntSource
Returns the index of the element, if it exists.
elemIndices :: (ListLike full item, Eq item, ListLike result Int) => item -> full -> resultSource
Returns the indices of the matching elements. See also findIndices
findIndex :: ListLike full item => (item -> Bool) -> full -> Maybe IntSource
Take a function and return the index of the first matching element, or Nothing if no element matches
findIndices :: (ListLike full item, ListLike result Int) => (item -> Bool) -> full -> resultSource
Returns the indices of all elements satisfying the function
Zipping and unzipping lists
zip :: (ListLike full item, ListLike fullb itemb, ListLike result (item, itemb)) => full -> fullb -> resultSource
Takes two lists and returns a list of corresponding pairs.
zipWith :: (ListLike full item, ListLike fullb itemb, ListLike result resultitem) => (item -> itemb -> resultitem) -> full -> fullb -> resultSource
Takes two lists and combines them with a custom combining function
unzip :: (ListLike full (itema, itemb), ListLike ra itema, ListLike rb itemb) => full -> (ra, rb)Source
Converts a list of pairs into two separate lists of elements
Monadic Operations
sequence :: (ListLike full item, Monad m, ListLike fullinp (m item)) => fullinp -> m fullSource
Evaluate each action in the sequence and collect the results
sequence_ :: (Monad m, ListLike mfull (m item)) => mfull -> m ()Source
Evaluate each action, ignoring the results
mapM :: (ListLike full item, Monad m, ListLike full' item') => (item -> m item') -> full -> m full'Source

A map in monad space. Same as sequence . map

See also rigidMapM

rigidMapM :: (ListLike full item, Monad m) => (item -> m item) -> full -> m fullSource
Like mapM, but without the possibility of changing the type of the item. This can have performance benefits with some types.
mapM_ :: (ListLike full item, Monad m) => (item -> m b) -> full -> m ()Source
A map in monad space, discarding results. Same as sequence_ . map
Input and Output
class ListLike full item => ListLikeIO full item | full -> item whereSource

An extension to ListLike for those data types that support I/O. These functions mirror those in System.IO for the most part. They also share the same names; see the comments in Data.ListLike for help importing them.

Note that some types may not be capable of lazy reading or writing. Therefore, the usual semantics of System.IO functions regarding laziness may or may not be available from a particular implementation.

Minimal complete definition:

  • hGetLine
  • hGetContents
  • hGet
  • hGetNonBlocking
  • hPutStr
Methods
hGetLine :: Handle -> IO fullSource
hGetContents :: Handle -> IO fullSource
hGet :: Handle -> Int -> IO fullSource
hGetNonBlocking :: Handle -> Int -> IO fullSource
hPutStr :: Handle -> full -> IO ()Source
hPutStrLn :: Handle -> full -> IO ()Source
getLine :: IO fullSource
getContents :: IO fullSource
putStr :: full -> IO ()Source
putStrLn :: full -> IO ()Source
interact :: (full -> full) -> IO ()Source
readFile :: FilePath -> IO fullSource
writeFile :: FilePath -> full -> IO ()Source
appendFile :: FilePath -> full -> IO ()Source
show/hide Instances
Special lists
Strings
toString :: StringLike s => s -> StringSource
Converts the structure to a String
fromString :: StringLike s => String -> sSource
Converts a String to a list
lines :: (StringLike s, ListLike full s) => s -> fullSource
Breaks a string into a list of strings
words :: (StringLike s, ListLike full s) => s -> fullSource
Breaks a string into a list of words
"Set" operations
nub :: (ListLike full item, Eq item) => full -> fullSource
Removes duplicate elements from the list. See also nubBy
delete :: (ListLike full item, Eq item) => item -> full -> fullSource
Removes the first instance of the element from the list. See also deleteBy
deleteFirsts :: (ListLike full item, Eq item) => full -> full -> fullSource
List difference. Removes from the first list the first instance of each element of the second list. See '(\)' and deleteFirstsBy
union :: (ListLike full item, Eq item) => full -> full -> fullSource
List union: the set of elements that occur in either list. Duplicate elements in the first list will remain duplicate. See also unionBy.
intersect :: (ListLike full item, Eq item) => full -> full -> fullSource
List intersection: the set of elements that occur in both lists. See also intersectBy
Ordered lists
sort :: (ListLike full item, Ord item) => full -> fullSource
Sorts the list. On data types that do not preserve ordering, or enforce their own ordering, the result may not be what you expect. See also sortBy.
insert :: (ListLike full item, Ord item) => item -> full -> fullSource
Inserts the element at the last place where it is still less than or equal to the next element. On data types that do not preserve ordering, or enforce their own ordering, the result may not be what you expect. On types such as maps, this may result in changing an existing item. See also insertBy.
Generalized functions
The "By" operations
User-supplied equality (replacing an Eq context)
nubBy :: ListLike full item => (item -> item -> Bool) -> full -> fullSource
Generic version of nub
deleteBy :: ListLike full item => (item -> item -> Bool) -> item -> full -> fullSource
Generic version of deleteBy
deleteFirstsBy :: ListLike full item => (item -> item -> Bool) -> full -> full -> fullSource
Generic version of deleteFirsts
unionBy :: ListLike full item => (item -> item -> Bool) -> full -> full -> fullSource
Generic version of union
intersectBy :: ListLike full item => (item -> item -> Bool) -> full -> full -> fullSource
Generic version of intersect
groupBy :: (ListLike full item, ListLike full' full, Eq item) => (item -> item -> Bool) -> full -> full'Source
Gen