moffy-0.1.1.0: Monadic Functional Reactive Programming
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Moffy.Handle

Synopsis

Constraint

type ExpandableHandle es es' = (ExpandableOccurred es es', Collapsable es' es) Source #

type MergeableOccurred es es' mrg = Mergeable Occurred es es' mrg Source #

Plain Handle

Type

type Handle m es = EvReqs es -> m (EvOccs es) Source #

type Handle' m es = EvReqs es -> m (Maybe (EvOccs es)) Source #

Composer

retry :: Monad m => Handle' m es -> Handle m es Source #

sleep :: Int -> Handle' IO es -> Handle' IO es Source #

expand :: (Applicative m, ExpandableHandle es es') => Handle' m es -> Handle' m es' Source #

before :: (Monad m, ExpandableHandle es (es :+: es'), ExpandableHandle es' (es :+: es')) => Handle' m es -> Handle' m es' -> Handle' m (es :+: es') infixr 5 Source #

merge :: (Applicative m, ExpandableHandle es (es :+: es'), ExpandableHandle es' (es :+: es'), MergeableOccurred es es' (es :+: es')) => Handle' m es -> Handle' m es' -> Handle' m (es :+: es') infixr 6 Source #

Handle with State

Type

type HandleSt st m es = EvReqs es -> St st m (EvOccs es) Source #

type HandleSt' st m es = EvReqs es -> St st m (Maybe (EvOccs es)) Source #

type HandleSt' st m es = HandleIo' st st m es

type St st m a = st -> m (a, st) Source #

liftHandle :: Functor m => Handle m es -> HandleSt st m es Source #

liftHandle' :: Functor m => Handle' m es -> HandleSt' st m es Source #

liftSt :: Functor m => m r -> St st m r Source #

Composer

retrySt :: Monad m => HandleSt' st m es -> HandleSt st m es Source #

expandSt :: (Applicative m, ExpandableHandle es es') => HandleSt' st m es -> HandleSt' st m es' Source #

beforeSt :: (Monad m, ExpandableHandle es (es :+: es'), ExpandableHandle es' (es :+: es')) => HandleSt' st m es -> HandleSt' st m es' -> HandleSt' st m (es :+: es') infixr 5 Source #

mergeSt :: (Monad m, ExpandableHandle es (es :+: es'), ExpandableHandle es' (es :+: es'), MergeableOccurred es es' (es :+: es')) => HandleSt' st m es -> HandleSt' st m es' -> HandleSt' st m (es :+: es') infixr 6 Source #

Handle with Input and Output

Type

type HandleIo' i o m es = EvReqs es -> i -> m (Maybe (EvOccs es), o) Source #

pushInput :: (a -> HandleSt' st m es) -> HandleIo' (a, st) st m es Source #

popInput :: HandleIo' (a, st) st m es -> a -> HandleSt' st m es Source #

Composer

expandIo :: (Applicative m, ExpandableHandle es es') => HandleIo' i o m es -> (i -> m o) -> HandleIo' i o m es' Source #

beforeIo :: (Monad m, ExpandableHandle es (es :+: es'), ExpandableHandle es' (es :+: es')) => HandleIo' i x m es -> (i -> m x) -> HandleIo' x o m es' -> (x -> m o) -> HandleIo' i o m (es :+: es') Source #

mergeIo :: (Monad m, ExpandableHandle es (es :+: es'), ExpandableHandle es' (es :+: es'), MergeableOccurred es es' (es :+: es')) => HandleIo' i x m es -> (i -> m x) -> HandleIo' x o m es' -> (x -> m o) -> HandleIo' i o m (es :+: es') Source #