| Portability | Rank-N Types, MPTCs |
|---|---|
| Stability | provisional |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
| Safe Haskell | Safe-Inferred |
Data.Machine.Plan
Contents
Description
- type Plan k i o a = forall m. PlanT k i o m a
- runPlan :: PlanT k i o Identity a -> (a -> r) -> (o -> r -> r) -> (forall z. (z -> r) -> k i z -> r -> r) -> r -> r
- newtype PlanT k i o m a = PlanT {
- runPlanT :: forall r. (a -> m r) -> (o -> m r -> m r) -> (forall z. (z -> m r) -> k i z -> m r -> m r) -> m r -> m r
- yield :: o -> Plan k i o ()
- await :: Category k => Plan k i o i
- stop :: Plan k i o a
- awaits :: k i j -> Plan k i o j
Plans
type Plan k i o a = forall m. PlanT k i o m aSource
A is a specification for a pure Plan k i o aMachine, that reads inputs selected by k
with types based on i, writes values of type o, and has intermediate results of type a.
A can be used as a PlanT k i o a for any PlanT k i o m a.
Monad m
It is perhaps easier to think of Plan in its un-cps'ed form, which would
look like:
data Plan k i o a
= Done a
| Yield o (Plan k i o a)
| forall z. Await (z -> Plan k i o a) (k i z) (Plan k i o a)
| Fail
runPlan :: PlanT k i o Identity a -> (a -> r) -> (o -> r -> r) -> (forall z. (z -> r) -> k i z -> r -> r) -> r -> rSource
newtype PlanT k i o m a Source
Constructors
| PlanT | |
Fields
| |
Instances
| (Monad (PlanT k i o m), MonadError e m) => MonadError e (PlanT k i o m) | |
| (Monad (PlanT k i o m), MonadReader e m) => MonadReader e (PlanT k i o m) | |
| (Monad (PlanT k i o m), MonadState s m) => MonadState s (PlanT k i o m) | |
| MonadTrans (PlanT k i o) | |
| Monad (PlanT k i o m) | |
| Functor (PlanT k i o m) | |
| Monad (PlanT k i o m) => MonadPlus (PlanT k i o m) | |
| Functor (PlanT k i o m) => Applicative (PlanT k i o m) | |
| Applicative (PlanT k i o m) => Alternative (PlanT k i o m) | |
| (Monad (PlanT k i o m), MonadIO m) => MonadIO (PlanT k i o m) |