Copyright | (c) Edward Kmett 2009 |
---|---|
License | BSD-style |
Maintainer | ekmett@gmail.com |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell98 |
A Generator1
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.
Generator1
is to Generator
as Foldable1
is to Foldable
.
Synopsis
- class Generator c => Generator1 c where
- reduce1 :: (Generator1 c, Reducer (Elem c) m) => c -> m
- mapReduceWith1 :: (Generator1 c, Reducer e m) => (m -> n) -> (Elem c -> e) -> c -> n
- reduceWith1 :: (Generator1 c, Reducer (Elem c) m) => (m -> n) -> c -> n
Generators
class Generator c => Generator1 c where Source #
minimal definition mapReduce1
or mapTo1
mapReduce1 :: Reducer e m => (Elem c -> e) -> c -> m Source #
mapTo1 :: Reducer e m => (Elem c -> e) -> m -> c -> m Source #
mapFrom1 :: Reducer e m => (Elem c -> e) -> c -> m -> m Source #
Instances
Generator1 (NonEmpty e) Source # | |
Combinators
mapReduceWith1 :: (Generator1 c, Reducer e m) => (m -> n) -> (Elem c -> e) -> c -> n Source #
reduceWith1 :: (Generator1 c, Reducer (Elem c) m) => (m -> n) -> c -> n Source #