Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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
- data Chronological
- data Retrograde
- class SeqDirection a where
- type ReverseDirection a
- data SeqDirection dir => DirectionalSeq dir a = DSeq {}
- emptyDirSeq :: DirectionalSeq dir a
- appendDirSeq :: DirectionalSeq dir a -> DirectionalSeq dir a -> DirectionalSeq dir a
- onDirectedSeq :: SeqDirection dir => (Seq a -> Seq b) -> DirectionalSeq dir a -> DirectionalSeq dir b
- onDirSeqSubset :: SeqDirection dir => (e -> Bool) -> (e -> Bool) -> (DirectionalSeq dir e -> (DirectionalSeq dir e, a)) -> DirectionalSeq dir e -> (DirectionalSeq dir e, a)
- dirSeqBreakl :: SeqDirection dir => (e -> Bool) -> DirectionalSeq dir e -> (DirectionalSeq dir e, DirectionalSeq dir e)
- dirSeqPartition :: SeqDirection dir => (e -> Bool) -> DirectionalSeq dir e -> (DirectionalSeq dir e, DirectionalSeq dir e)
- withDirSeqHead :: SeqDirection dir => (e -> r) -> DirectionalSeq dir e -> Maybe r
Documentation
data Chronological Source #
Instances
SeqDirection Chronological Source # | |
Defined in Matterhorn.Types.DirectionalSeq | |
MessageOps ChronologicalMessages Source # | |
Defined in Matterhorn.Types.Messages | |
type ReverseDirection Chronological Source # | |
Defined in Matterhorn.Types.DirectionalSeq |
data Retrograde Source #
Instances
SeqDirection Retrograde Source # | |
Defined in Matterhorn.Types.DirectionalSeq | |
type ReverseDirection Retrograde Source # | |
Defined in Matterhorn.Types.DirectionalSeq |
class SeqDirection a Source #
type ReverseDirection a Source #
Instances
SeqDirection Chronological Source # | |
Defined in Matterhorn.Types.DirectionalSeq | |
SeqDirection Retrograde Source # | |
Defined in Matterhorn.Types.DirectionalSeq |
data SeqDirection dir => DirectionalSeq dir a Source #
Instances
emptyDirSeq :: DirectionalSeq dir a Source #
appendDirSeq :: DirectionalSeq dir a -> DirectionalSeq dir a -> DirectionalSeq dir a Source #
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 #