| Copyright | (c) The University of Glasgow 1994-2002 | 
|---|---|
| License | see libraries/base/LICENSE | 
| Maintainer | cvs-ghc@haskell.org | 
| Stability | internal | 
| Portability | non-portable (GHC Extensions) | 
| Safe Haskell | Trustworthy | 
| Language | Haskell2010 | 
GHC.List
Description
The List data type and its operations
Synopsis
- map :: (a -> b) -> [a] -> [b]
 - (++) :: [a] -> [a] -> [a]
 - filter :: (a -> Bool) -> [a] -> [a]
 - concat :: [[a]] -> [a]
 - head :: [a] -> a
 - last :: [a] -> a
 - tail :: [a] -> [a]
 - init :: [a] -> [a]
 - uncons :: [a] -> Maybe (a, [a])
 - null :: [a] -> Bool
 - length :: [a] -> Int
 - (!!) :: [a] -> Int -> a
 - foldl :: forall a b. (b -> a -> b) -> b -> [a] -> b
 - foldl' :: forall a b. (b -> a -> b) -> b -> [a] -> b
 - foldl1 :: (a -> a -> a) -> [a] -> a
 - foldl1' :: (a -> a -> a) -> [a] -> a
 - scanl :: (b -> a -> b) -> b -> [a] -> [b]
 - scanl1 :: (a -> a -> a) -> [a] -> [a]
 - scanl' :: (b -> a -> b) -> b -> [a] -> [b]
 - foldr :: (a -> b -> b) -> b -> [a] -> b
 - foldr1 :: (a -> a -> a) -> [a] -> a
 - scanr :: (a -> b -> b) -> b -> [a] -> [b]
 - scanr1 :: (a -> a -> a) -> [a] -> [a]
 - iterate :: (a -> a) -> a -> [a]
 - iterate' :: (a -> a) -> a -> [a]
 - repeat :: a -> [a]
 - replicate :: Int -> a -> [a]
 - cycle :: [a] -> [a]
 - take :: Int -> [a] -> [a]
 - drop :: Int -> [a] -> [a]
 - sum :: Num a => [a] -> a
 - product :: Num a => [a] -> a
 - maximum :: Ord a => [a] -> a
 - minimum :: Ord a => [a] -> a
 - splitAt :: Int -> [a] -> ([a], [a])
 - takeWhile :: (a -> Bool) -> [a] -> [a]
 - dropWhile :: (a -> Bool) -> [a] -> [a]
 - span :: (a -> Bool) -> [a] -> ([a], [a])
 - break :: (a -> Bool) -> [a] -> ([a], [a])
 - reverse :: [a] -> [a]
 - and :: [Bool] -> Bool
 - or :: [Bool] -> Bool
 - any :: (a -> Bool) -> [a] -> Bool
 - all :: (a -> Bool) -> [a] -> Bool
 - elem :: Eq a => a -> [a] -> Bool
 - notElem :: Eq a => a -> [a] -> Bool
 - lookup :: Eq a => a -> [(a, b)] -> Maybe b
 - concatMap :: (a -> [b]) -> [a] -> [b]
 - zip :: [a] -> [b] -> [(a, b)]
 - zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]
 - zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
 - zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
 - unzip :: [(a, b)] -> ([a], [b])
 - unzip3 :: [(a, b, c)] -> ([a], [b], [c])
 - errorEmptyList :: String -> a
 
Documentation
map :: (a -> b) -> [a] -> [b] Source #
O(n). map f xs is the list obtained by applying f to
 each element of xs, i.e.,
map f [x1, x2, ..., xn] == [f x1, f x2, ..., f xn] map f [x1, x2, ...] == [f x1, f x2, ...]
>>>map (+1) [1, 2, 3]
(++) :: [a] -> [a] -> [a] infixr 5 Source #
Append two lists, i.e.,
[x1, ..., xm] ++ [y1, ..., yn] == [x1, ..., xm, y1, ..., yn] [x1, ..., xm] ++ [y1, ...] == [x1, ..., xm, y1, ...]
If the first list is not finite, the result is the first list.
filter :: (a -> Bool) -> [a] -> [a] Source #
O(n). filter, applied to a predicate and a list, returns
 the list of those elements that satisfy the predicate; i.e.,
filter p xs = [ x | x <- xs, p x]
>>>filter odd [1, 2, 3][1,3]
O(n). Extract the last element of a list, which must be finite and non-empty.
O(1). Extract the elements after the head of a list, which must be non-empty.
O(n). Return all the elements of a list except the last one. The list must be non-empty.
O(n). length returns the length of a finite list as an
 Int. It is an instance of the more general genericLength, the
 result type of which may be any kind of number.
(!!) :: [a] -> Int -> a infixl 9 Source #
List index (subscript) operator, starting from 0.
 It is an instance of the more general genericIndex,
 which takes an index of any integral type.
foldl :: forall a b. (b -> a -> b) -> b -> [a] -> b Source #
foldl, applied to a binary operator, a starting value (typically
 the left-identity of the operator), and a list, reduces the list
 using the binary operator, from left to right:
foldl f z [x1, x2, ..., xn] == (...((z `f` x1) `f` x2) `f`...) `f` xn
The list must be finite.
foldr :: (a -> b -> b) -> b -> [a] -> b Source #
foldr, applied to a binary operator, a starting value (typically
 the right-identity of the operator), and a list, reduces the list
 using the binary operator, from right to left:
foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...)
replicate :: Int -> a -> [a] Source #
replicate n x is a list of length n with x the value of
 every element.
 It is an instance of the more general genericReplicate,
 in which n may be of any integral type.
cycle ties a finite list into a circular one, or equivalently,
 the infinite repetition of the original list.  It is the identity
 on infinite lists.
take :: Int -> [a] -> [a] Source #
take n, applied to a list xs, returns the prefix of xs
 of length n, or xs itself if n > :length xs
take 5 "Hello World!" == "Hello" take 3 [1,2,3,4,5] == [1,2,3] take 3 [1,2] == [1,2] take 3 [] == [] take (-1) [1,2] == [] take 0 [1,2] == []
It is an instance of the more general genericTake,
 in which n may be of any integral type.
drop :: Int -> [a] -> [a] Source #
drop n xs returns the suffix of xs
 after the first n elements, or [] if n > :length xs
drop 6 "Hello World!" == "World!" drop 3 [1,2,3,4,5] == [4,5] drop 3 [1,2] == [] drop 3 [] == [] drop (-1) [1,2] == [1,2] drop 0 [1,2] == [1,2]
It is an instance of the more general genericDrop,
 in which n may be of any integral type.
product :: Num a => [a] -> a Source #
The product function computes the product of a finite list of numbers.
splitAt :: Int -> [a] -> ([a], [a]) Source #
splitAt n xs returns a tuple where first element is xs prefix of
 length n and second element is the remainder of the list:
splitAt 6 "Hello World!" == ("Hello ","World!")
splitAt 3 [1,2,3,4,5] == ([1,2,3],[4,5])
splitAt 1 [1,2,3] == ([1],[2,3])
splitAt 3 [1,2,3] == ([1,2,3],[])
splitAt 4 [1,2,3] == ([1,2,3],[])
splitAt 0 [1,2,3] == ([],[1,2,3])
splitAt (-1) [1,2,3] == ([],[1,2,3])It is equivalent to ( when take n xs, drop n xs)n is not _|_
 (splitAt _|_ xs = _|_).
 splitAt is an instance of the more general genericSplitAt,
 in which n may be of any integral type.
takeWhile :: (a -> Bool) -> [a] -> [a] Source #
takeWhile, applied to a predicate p and a list xs, returns the
 longest prefix (possibly empty) of xs of elements that satisfy p:
takeWhile (< 3) [1,2,3,4,1,2,3,4] == [1,2] takeWhile (< 9) [1,2,3] == [1,2,3] takeWhile (< 0) [1,2,3] == []
span :: (a -> Bool) -> [a] -> ([a], [a]) Source #
span, applied to a predicate p and a list xs, returns a tuple where
 first element is longest prefix (possibly empty) 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])
break :: (a -> Bool) -> [a] -> ([a], [a]) Source #
break, applied to a predicate p and a list xs, returns a tuple where
 first element is longest prefix (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],[])
reverse :: [a] -> [a] Source #
reverse xs returns the elements of xs in reverse order.
 xs must be finite.
lookup :: Eq a => a -> [(a, b)] -> Maybe b Source #
O(n). lookup key assocs looks up a key in an association
 list.
>>>lookup 2 [(1, "first"), (2, "second"), (3, "third")]Just "second"
concatMap :: (a -> [b]) -> [a] -> [b] Source #
Map a function over a list and concatenate the results.
zip :: [a] -> [b] -> [(a, b)] Source #
O(min(m,n)). zip takes two lists and returns a list of
 corresponding pairs.
zip [1, 2] ['a', 'b'] = [(1, 'a'), (2, 'b')]
If one input list is short, excess elements of the longer list are discarded:
zip [1] ['a', 'b'] = [(1, 'a')] zip [1, 2] ['a'] = [(1, 'a')]
zip is right-lazy:
zip [] _|_ = [] zip _|_ [] = _|_
zip is capable of list fusion, but it is restricted to its
 first list argument and its resulting list.
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] Source #
O(min(m,n)). zipWith generalises zip by zipping with the
 function given as the first argument, instead of a tupling function. For
 example,  is applied to two lists to produce the list of
 corresponding sums:zipWith (+)
>>>zipWith (+) [1, 2, 3] [4, 5, 6][5,7,9]
zipWith is right-lazy:
zipWith f [] _|_ = []
zipWith is capable of list fusion, but it is restricted to its
 first list argument and its resulting list.
unzip :: [(a, b)] -> ([a], [b]) Source #
unzip transforms a list of pairs into a list of first components
 and a list of second components.
errorEmptyList :: String -> a Source #