Copyright | (c) Edward Kmett 2009 |
---|---|
License | BSD-style |
Maintainer | ekmett@gmail.com |
Stability | experimental |
Portability | portable |
Safe Haskell | Trustworthy |
Language | Haskell98 |
A Generator
c
is a possibly-specialized container, which contains values of
type Elem
c
, and which knows how to efficiently apply a Reducer
to extract
an answer.
Since a Generator
is not polymorphic in its contents, it is more specialized
than Data.Foldable.Foldable, and a Reducer
may supply efficient left-to-right
and right-to-left reduction strategies that a Generator
may avail itself of.
- class Generator c where
- newtype Keys c = Keys {
- getKeys :: c
- newtype Values c = Values {
- getValues :: c
- newtype Char8 c = Char8 {
- getChar8 :: c
- reduce :: (Generator c, Reducer (Elem c) m, Monoid m) => c -> m
- mapReduceWith :: (Generator c, Reducer e m, Monoid m) => (m -> n) -> (Elem c -> e) -> c -> n
- reduceWith :: (Generator c, Reducer (Elem c) m, Monoid m) => (m -> n) -> c -> n
Generators
class Generator c where Source
Nothing
mapReduce :: (Reducer e m, Monoid m) => (Elem c -> e) -> c -> m Source
mapTo :: (Reducer e m, Monoid m) => (Elem c -> e) -> m -> c -> m Source
mapFrom :: (Reducer e m, Monoid m) => (Elem c -> e) -> c -> m -> m Source
Generator ByteString | |
Generator ByteString | |
Generator IntSet | |
Generator Text | |
Generator [c] | |
Generator (IntMap v) | |
Generator (Set a) | |
Generator (Seq c) | |
Generator (NonEmpty c) | |
Generator (HashSet a) | |
Generator (Char8 ByteString) | |
Generator (Char8 ByteString) | |
Ix i => Generator (Values (Array i e)) | |
Generator (Values (IntMap v)) | |
Generator (Values (Map k v)) | |
Ix i => Generator (Keys (Array i e)) | |
Generator (Keys (IntMap v)) | |
Generator (Keys (Map k v)) | |
Ix i => Generator (Array i e) | |
Generator (Map k v) | |
Measured v e => Generator (FingerTree v e) | |
Generator (HashMap k v) |
Generator Transformers
a Generator
transformer that asks only for the keys of an indexed container
a Generator
transformer that asks only for the values contained in an indexed container
a Generator
transformer that treats Word8
as Char
This lets you use a ByteString
as a Char
source without going through a Monoid
transformer like UTF8
Generator (Char8 ByteString) | |
Generator (Char8 ByteString) | |
type Elem (Char8 ByteString) = Char | |
type Elem (Char8 ByteString) = Char |