mono-traversable-0.9.0: Type classes for mapping, folding, and traversing monomorphic containers

Safe HaskellNone
LanguageHaskell2010

Data.Sequences

Description

Warning: This module should be considered highly experimental.

Synopsis

Documentation

class (Integral (Index seq), GrowingAppend seq) => SemiSequence seq where Source

SemiSequence was created to share code between IsSequence and MinLen.

Semi means SemiGroup A SemiSequence can accomodate a SemiGroup such as NonEmpty or MinLen A Monoid should be able to fill out IsSequence.

SemiSequence operations maintain the same type because they all maintain the same number of elements or increase them. However, a decreasing function such as filter may change they type. For example, from NonEmpty to '[]' This type-changing function exists on NonNull as nfilter

filter and other such functions are placed in IsSequence

Associated Types

type Index seq Source

Methods

intersperse :: Element seq -> seq -> seq Source

reverse :: seq -> seq Source

find :: (Element seq -> Bool) -> seq -> Maybe (Element seq) Source

sortBy :: (Element seq -> Element seq -> Ordering) -> seq -> seq Source

cons :: Element seq -> seq -> seq Source

snoc :: seq -> Element seq -> seq Source

Instances

SemiSequence ByteString 
SemiSequence ByteString 
SemiSequence Text 
SemiSequence Text 
SemiSequence [a] 
SemiSequence (Seq a) 
Storable a => SemiSequence (Vector a) 
SemiSequence (NonEmpty a) 
SemiSequence (Vector a) 
Unbox a => SemiSequence (Vector a) 
SemiSequence (DList a) 
SemiSequence seq => SemiSequence (MinLen nat seq) 

singleton :: IsSequence seq => Element seq -> seq Source

class (Monoid seq, MonoTraversable seq, SemiSequence seq, MonoPointed seq) => IsSequence seq where Source

Sequence Laws:

fromList . otoList = id
fromList (x <> y) = fromList x <> fromList y
otoList (fromList x <> fromList y) = x <> y

Minimal complete definition

Nothing

Methods

fromList :: [Element seq] -> seq Source

break :: (Element seq -> Bool) -> seq -> (seq, seq) Source

span :: (Element seq -> Bool) -> seq -> (seq, seq) Source

dropWhile :: (Element seq -> Bool) -> seq -> seq Source

takeWhile :: (Element seq -> Bool) -> seq -> seq Source

splitAt :: Index seq -> seq -> (seq, seq) Source

unsafeSplitAt :: Index seq -> seq -> (seq, seq) Source

take :: Index seq -> seq -> seq Source

unsafeTake :: Index seq -> seq -> seq Source

drop :: Index seq -> seq -> seq Source

unsafeDrop :: Index seq -> seq -> seq Source

partition :: (Element seq -> Bool) -> seq -> (seq, seq) Source

uncons :: seq -> Maybe (Element seq, seq) Source

unsnoc :: seq -> Maybe (seq, Element seq) Source

filter :: (Element seq -> Bool) -> seq -> seq Source

filterM :: Monad m => (Element seq -> m Bool) -> seq -> m seq Source

replicate :: Index seq -> Element seq -> seq Source

replicateM :: Monad m => Index seq -> m (Element seq) -> m seq Source

groupBy :: (Element seq -> Element seq -> Bool) -> seq -> [seq] Source

groupAllOn :: Eq b => (Element seq -> b) -> seq -> [seq] Source

Similar to standard groupBy, but operates on the whole collection, not just the consecutive items.

subsequences :: seq -> [seq] Source

permutations :: seq -> [seq] Source

tailEx :: seq -> seq Source

initEx :: seq -> seq Source

unsafeTail :: seq -> seq Source

unsafeInit :: seq -> seq Source

index :: seq -> Index seq -> Maybe (Element seq) Source

indexEx :: seq -> Index seq -> Element seq Source

unsafeIndex :: seq -> Index seq -> Element seq Source

Instances

IsSequence ByteString 
IsSequence ByteString 
IsSequence Text 
IsSequence Text 
IsSequence [a] 
IsSequence (Seq a) 
Storable a => IsSequence (Vector a) 
IsSequence (Vector a) 
Unbox a => IsSequence (Vector a) 
IsSequence (DList a) 

defaultFind :: MonoFoldable seq => (Element seq -> Bool) -> seq -> Maybe (Element seq) Source

defaultIntersperse :: IsSequence seq => Element seq -> seq -> seq Source

defaultReverse :: IsSequence seq => seq -> seq Source

defaultSortBy :: IsSequence seq => (Element seq -> Element seq -> Ordering) -> seq -> seq Source

vectorSortBy :: Vector v e => (e -> e -> Ordering) -> v e -> v e Source

vectorSort :: (Vector v e, Ord e) => v e -> v e Source

defaultCons :: IsSequence seq => Element seq -> seq -> seq Source

defaultSnoc :: IsSequence seq => seq -> Element seq -> seq Source

tailDef :: IsSequence seq => seq -> seq Source

like Data.List.tail, but an input of mempty returns mempty

initDef :: IsSequence seq => seq -> seq Source

like Data.List.init, but an input of mempty returns mempty

class (MonoFoldableEq seq, IsSequence seq, Eq (Element seq)) => EqSequence seq where Source

Minimal complete definition

Nothing

Methods

stripPrefix :: seq -> seq -> Maybe seq Source

stripSuffix :: seq -> seq -> Maybe seq Source

isPrefixOf :: seq -> seq -> Bool Source

isSuffixOf :: seq -> seq -> Bool Source

isInfixOf :: seq -> seq -> Bool Source

group :: seq -> [seq] Source

groupAll :: seq -> [seq] Source

Similar to standard group, but operates on the whole collection, not just the consecutive items.

Instances

EqSequence ByteString 
EqSequence ByteString 
EqSequence Text 
EqSequence Text 
Eq a => EqSequence [a] 
Eq a => EqSequence (Seq a) 
(Eq a, Storable a) => EqSequence (Vector a) 
Eq a => EqSequence (Vector a) 
(Eq a, Unbox a) => EqSequence (Vector a) 

elem :: EqSequence seq => Element seq -> seq -> Bool Source

Deprecated: use oelem

notElem :: EqSequence seq => Element seq -> seq -> Bool Source

Deprecated: use onotElem

class (EqSequence seq, MonoFoldableOrd seq) => OrdSequence seq where Source

Minimal complete definition

Nothing

Methods

sort :: seq -> seq Source

Instances

OrdSequence ByteString 
OrdSequence ByteString 
OrdSequence Text 
OrdSequence Text 
Ord a => OrdSequence [a] 
Ord a => OrdSequence (Seq a) 
(Ord a, Storable a) => OrdSequence (Vector a) 
Ord a => OrdSequence (Vector a) 
(Ord a, Unbox a) => OrdSequence (Vector a) 

class (IsSequence t, IsString t, Element t ~ Char) => Textual t where Source

Minimal complete definition

words, unwords, lines, unlines, toLower, toUpper, toCaseFold

Methods

words :: t -> [t] Source

unwords :: [t] -> t Source

lines :: t -> [t] Source

unlines :: [t] -> t Source

toLower :: t -> t Source

toUpper :: t -> t Source

toCaseFold :: t -> t Source

breakWord :: t -> (t, t) Source

breakLine :: t -> (t, t) Source

Instances

Textual Text 
Textual Text 
(~) * c Char => Textual [c] 

catMaybes :: (IsSequence (f (Maybe t)), Functor f, Element (f (Maybe t)) ~ Maybe t) => f (Maybe t) -> f t Source

Takes all of the Just values from a sequence of Maybe ts and concatenates them into an unboxed sequence of ts.

Since 0.6.2

sortOn :: (Ord o, SemiSequence seq) => (Element seq -> o) -> seq -> seq Source

Same as sortBy . comparing.

Sicne 0.7.0