Copyright | (c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.; 2017 Alexis King |
---|---|
License | BSD3 |
Maintainer | Alexis King <lexi.lambda@gmail.com> |
Stability | experimental |
Portability | GHC specific language extensions. |
Safe Haskell | None |
Language | Haskell2010 |
Control.Monad.Freer.Coroutine
Contents
Description
An effect to compose functions with the ability to yield.
Using http://okmij.org/ftp/Haskell/extensible/Eff1.hs as a starting point.
Synopsis
- data Yield a b c = Yield a (b -> c)
- yield :: Member ( Yield a b) effs => a -> (b -> c) -> Eff effs c
- data Status effs a b r
- runC :: Eff ( Yield a b ': effs) r -> Eff effs ( Status effs a b r)
- interposeC :: Member ( Yield a b) effs => Eff effs r -> Eff effs ( Status effs a b r)
- replyC :: Yield a b c -> (c -> Eff effs ( Status effs a b r)) -> Eff effs ( Status effs a b r)
Yield Control
A type representing a yielding of control.
Type variables have following meaning:
-
a
- The current type.
-
b
- The input to the continuation function.
-
c
- The output of the continuation.
Constructors
Yield a (b -> c) |
yield :: Member ( Yield a b) effs => a -> (b -> c) -> Eff effs c Source #
Lifts a value and a function into the Coroutine effect.
Handle Yield Effect
runC :: Eff ( Yield a b ': effs) r -> Eff effs ( Status effs a b r) Source #
Launch a coroutine and report its status.