| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Data.List.Plus
- module Data.List
- catMaybes :: [Maybe a] -> [a]
- chunksOf :: Int -> [a] -> [[a]]
- extractLast :: a -> [a] -> ([a], a)
- groupOn :: Eq b => (a -> b) -> [a] -> [(b, [a])]
- groupOn' :: Eq b => (a -> (b, c)) -> [a] -> [(b, [c])]
- groupOnSort :: Ord b => (a -> b) -> [a] -> [(b, [a])]
- groupOnSort' :: Ord b => (a -> (b, c)) -> [a] -> [(b, [c])]
- groupBySort :: Ord b => (b -> b -> Ordering) -> (a -> b) -> [a] -> [(b, [a])]
- groupUnsortedOn :: forall a b. Eq b => (a -> b) -> [a] -> [(b, [a])]
- headM :: Monad m => [a] -> m a
- lastElems :: Int -> [a] -> [a]
- lastM :: Monad m => [a] -> m a
- lookupM :: (Eq a, Monad m) => (a -> String) -> a -> [(a, b)] -> m b
- makeMapping :: (Eq a, Hashable a) => [(a, b)] -> [(a, b)]
- mapMaybe :: (a -> Maybe b) -> [a] -> [b]
- maximumM :: (Monad m, Ord a) => [a] -> m a
- merge :: Ord a => [a] -> [a] -> [a]
- middle :: [a] -> Maybe a
- minimumM :: (Monad m, Ord a) => [a] -> m a
- monotone :: Ord a => [a] -> Bool
- nubMerge :: Ord a => [a] -> [a] -> [a]
- prefixesAndSuffixes :: [a] -> [([a], [a])]
- sconcatBy :: (Ord b, Foldable f, Semigroup s) => (a -> b) -> (a -> s) -> f a -> [(b, s)]
- spanTailRec :: (a -> Bool) -> [a] -> ([a], [a])
- stripSuffix :: Eq a => [a] -> [a] -> Maybe [a]
- tryStripPrefix :: Eq a => [a] -> [a] -> [a]
- ungroupMay :: [(a, [b])] -> Maybe [(a, b)]
- withLast :: (a -> a) -> [a] -> [a]
Documentation
module Data.List
catMaybes :: [Maybe a] -> [a] #
The catMaybes function takes a list of Maybes and returns
a list of all the Just values.
Examples
Basic usage:
>>>catMaybes [Just 1, Nothing, Just 3][1,3]
When constructing a list of Maybe values, catMaybes can be used
to return all of the "success" results (if the list is the result
of a map, then mapMaybe would be more appropriate):
>>>import Text.Read ( readMaybe )>>>[readMaybe x :: Maybe Int | x <- ["1", "Foo", "3"] ][Just 1,Nothing,Just 3]>>>catMaybes $ [readMaybe x :: Maybe Int | x <- ["1", "Foo", "3"] ][1,3]
extractLast :: a -> [a] -> ([a], a) Source #
groupOnSort :: Ord b => (a -> b) -> [a] -> [(b, [a])] Source #
groupOnSort' :: Ord b => (a -> (b, c)) -> [a] -> [(b, [c])] Source #
groupBySort :: Ord b => (b -> b -> Ordering) -> (a -> b) -> [a] -> [(b, [a])] Source #
groupUnsortedOn :: forall a b. Eq b => (a -> b) -> [a] -> [(b, [a])] Source #
makeMapping :: (Eq a, Hashable a) => [(a, b)] -> [(a, b)] Source #
mapMaybe :: (a -> Maybe b) -> [a] -> [b] #
The mapMaybe function is a version of map which can throw
out elements. In particular, the functional argument returns
something of type . If this is Maybe bNothing, no element
is added on to the result list. If it is , then Just bb is
included in the result list.
Examples
Using is a shortcut for mapMaybe f x
in most cases:catMaybes $ map f x
>>>import Text.Read ( readMaybe )>>>let readMaybeInt = readMaybe :: String -> Maybe Int>>>mapMaybe readMaybeInt ["1", "Foo", "3"][1,3]>>>catMaybes $ map readMaybeInt ["1", "Foo", "3"][1,3]
If we map the Just constructor, the entire list should be returned:
>>>mapMaybe Just [1,2,3][1,2,3]
merge :: Ord a => [a] -> [a] -> [a] Source #
Merge two sorted list so that the resulting list is sorted as well. and contains all elements from one of the lists. The length of the resulting list is the sum of the lengths of the given lists.
middle :: [a] -> Maybe a Source #
Computes the element in the middle of the list If the list has an even number of elements, you will get the element after the middle of the list.
nubMerge :: Ord a => [a] -> [a] -> [a] Source #
Merge the two sorted lists and remove all duplicates.
prefixesAndSuffixes :: [a] -> [([a], [a])] Source #
spanTailRec :: (a -> Bool) -> [a] -> ([a], [a]) Source #
stripSuffix :: Eq a => [a] -> [a] -> Maybe [a] Source #
tryStripPrefix :: Eq a => [a] -> [a] -> [a] Source #
Strips as elements of a given prefix list as possible. Stops stripping if the prefix doesn't match anymore or is exhausted and returns the remaining string.
ungroupMay :: [(a, [b])] -> Maybe [(a, b)] Source #