matterhorn-50200.17.0: Terminal client for the Mattermost chat system
Safe HaskellNone
LanguageHaskell2010

Matterhorn.Types.DirectionalSeq

Description

These declarations allow the use of a DirectionalSeq, which is a Seq that uses a phantom type to identify the ordering of the elements in the sequence (Forward or Reverse). The constructors are not exported from this module so that a DirectionalSeq can only be constructed by the functions in this module.

Synopsis

Documentation

class SeqDirection a Source #

Associated Types

type ReverseDirection a Source #

Instances

Instances details
SeqDirection Retrograde Source # 
Instance details

Defined in Matterhorn.Types.DirectionalSeq

Associated Types

type ReverseDirection Retrograde Source #

SeqDirection Chronological Source # 
Instance details

Defined in Matterhorn.Types.DirectionalSeq

Associated Types

type ReverseDirection Chronological Source #

data SeqDirection dir => DirectionalSeq dir a Source #

Constructors

DSeq 

Fields

Instances

Instances details
MessageOps ChronologicalMessages Source # 
Instance details

Defined in Matterhorn.Types.Messages

SeqDirection dir => Functor (DirectionalSeq dir) Source # 
Instance details

Defined in Matterhorn.Types.DirectionalSeq

Methods

fmap :: (a -> b) -> DirectionalSeq dir a -> DirectionalSeq dir b #

(<$) :: a -> DirectionalSeq dir b -> DirectionalSeq dir a #

SeqDirection dir => Foldable (DirectionalSeq dir) Source # 
Instance details

Defined in Matterhorn.Types.DirectionalSeq

Methods

fold :: Monoid m => DirectionalSeq dir m -> m #

foldMap :: Monoid m => (a -> m) -> DirectionalSeq dir a -> m #

foldMap' :: Monoid m => (a -> m) -> DirectionalSeq dir a -> m #

foldr :: (a -> b -> b) -> b -> DirectionalSeq dir a -> b #

foldr' :: (a -> b -> b) -> b -> DirectionalSeq dir a -> b #

foldl :: (b -> a -> b) -> b -> DirectionalSeq dir a -> b #

foldl' :: (b -> a -> b) -> b -> DirectionalSeq dir a -> b #

foldr1 :: (a -> a -> a) -> DirectionalSeq dir a -> a #

foldl1 :: (a -> a -> a) -> DirectionalSeq dir a -> a #

toList :: DirectionalSeq dir a -> [a] #

null :: DirectionalSeq dir a -> Bool #

length :: DirectionalSeq dir a -> Int #

elem :: Eq a => a -> DirectionalSeq dir a -> Bool #

maximum :: Ord a => DirectionalSeq dir a -> a #

minimum :: Ord a => DirectionalSeq dir a -> a #

sum :: Num a => DirectionalSeq dir a -> a #

product :: Num a => DirectionalSeq dir a -> a #

SeqDirection dir => Traversable (DirectionalSeq dir) Source # 
Instance details

Defined in Matterhorn.Types.DirectionalSeq

Methods

traverse :: Applicative f => (a -> f b) -> DirectionalSeq dir a -> f (DirectionalSeq dir b) #

sequenceA :: Applicative f => DirectionalSeq dir (f a) -> f (DirectionalSeq dir a) #

mapM :: Monad m => (a -> m b) -> DirectionalSeq dir a -> m (DirectionalSeq dir b) #

sequence :: Monad m => DirectionalSeq dir (m a) -> m (DirectionalSeq dir a) #

(SeqDirection dir, Show a) => Show (DirectionalSeq dir a) Source # 
Instance details

Defined in Matterhorn.Types.DirectionalSeq

Methods

showsPrec :: Int -> DirectionalSeq dir a -> ShowS #

show :: DirectionalSeq dir a -> String #

showList :: [DirectionalSeq dir a] -> ShowS #

Semigroup (DirectionalSeq dir a) Source # 
Instance details

Defined in Matterhorn.Types.DirectionalSeq

Methods

(<>) :: DirectionalSeq dir a -> DirectionalSeq dir a -> DirectionalSeq dir a #

sconcat :: NonEmpty (DirectionalSeq dir a) -> DirectionalSeq dir a #

stimes :: Integral b => b -> DirectionalSeq dir a -> DirectionalSeq dir a #

Monoid (DirectionalSeq dir a) Source # 
Instance details

Defined in Matterhorn.Types.DirectionalSeq

Methods

mempty :: DirectionalSeq dir a #

mappend :: DirectionalSeq dir a -> DirectionalSeq dir a -> DirectionalSeq dir a #

mconcat :: [DirectionalSeq dir a] -> DirectionalSeq dir a #

onDirectedSeq :: SeqDirection dir => (Seq a -> Seq b) -> DirectionalSeq dir a -> DirectionalSeq dir b Source #

onDirSeqSubset :: SeqDirection dir => (e -> Bool) -> (e -> Bool) -> (DirectionalSeq dir e -> (DirectionalSeq dir e, a)) -> DirectionalSeq dir e -> (DirectionalSeq dir e, a) Source #

Uses a start-predicate and and end-predicate to identify (the first matching) subset that is delineated by start-predicate and end-predicate (inclusive). It will then call the passed operation function on the subset messages to get back a (possibly modified) set of messages, along with an extracted value. The onDirSeqSubset function will replace the original subset of messages with the set returned by the operation function and return the resulting message list along with the extracted value.

dirSeqBreakl :: SeqDirection dir => (e -> Bool) -> DirectionalSeq dir e -> (DirectionalSeq dir e, DirectionalSeq dir e) Source #

dirSeqBreakl splits the DirectionalSeq into a tuple where the first element is the (possibly empty) DirectionalSeq of all elements from the start for which the predicate returns false; the second tuple element is the remainder of the list, starting with the first element for which the predicate matched.

dirSeqPartition :: SeqDirection dir => (e -> Bool) -> DirectionalSeq dir e -> (DirectionalSeq dir e, DirectionalSeq dir e) Source #

dirSeqPartition splits the DirectionalSeq into a tuple of two DirectionalSeq elements: the first contains all elements for which the predicate is true and the second contains all elements for which the predicate is false.

withDirSeqHead :: SeqDirection dir => (e -> r) -> DirectionalSeq dir e -> Maybe r Source #