loop-effin-0.1.1.0: control-monad-loop port for effin

Safe HaskellNone
LanguageHaskell2010

Control.Effect.Loop

Synopsis

Documentation

data Loop c e a Source

Loop c e indicates an effect with ability to continue with c or exit with e.

Instances

Functor (Loop c e) 
Typeable (* -> * -> * -> *) Loop 
type Is (* -> * -> * -> *) Loop f 

class MemberEffect Loop (Loop c e) l => EffectLoop c e l Source

Instances

MemberEffect (* -> * -> * -> *) Loop (Loop c e) l => EffectLoop c e l 

loop :: EffectLoop c e l => (forall r. (c -> r) -> (e -> r) -> (a -> r) -> r) -> Effect l a Source

Lift a CPS style computation with continuation and exit handler to the Effect monad.

stepLoop :: Effect (Loop c e :+ l) c -> (c -> Effect l e) -> Effect l e Source

data LoopState c e a Source

Constructors

ContinueWith c 
ExitWith e 
Return a 

Instances

(Eq c, Eq e, Eq a) => Eq (LoopState c e a) 
(Ord c, Ord e, Ord a) => Ord (LoopState c e a) 
(Read c, Read e, Read a) => Read (LoopState c e a) 
(Show c, Show e, Show a) => Show (LoopState c e a) 

loop' :: EffectLoop c e l => LoopState c e a -> Effect l a Source

toCPS :: LoopState c e a -> Loop c e a Source

fromCPS :: Loop c e a -> LoopState c e a Source

continue :: EffectLoop () e l => Effect l a Source

exit :: EffectLoop c () l => Effect l a Source

continueWith :: forall c e l a. EffectLoop c e l => c -> Effect l a Source

exitWith :: EffectLoop c e l => e -> Effect l a Source

foreach :: [a] -> (a -> Effect (Loop c () :+ l) c) -> Effect l () Source

while :: Effect l Bool -> Effect (Loop c () :+ l) c -> Effect l () Source

doWhile :: Effect (Loop a a :+ l) a -> Effect l Bool -> Effect l a Source

once :: Effect (Loop a a :+ l) a -> Effect l a Source

repeatLoop :: Effect (Loop c e :+ l) a -> Effect l e Source

iterateLoop :: c -> (c -> Effect (Loop c e :+ l) c) -> Effect l e Source