Safe Haskell | None |
---|---|
Language | Haskell2010 |
Control.Moffy.Handle
Synopsis
- type ExpandableHandle (es :: Set Type) (es' :: Set Type) = (ExpandableOccurred es es', Collapsable es' es)
- type ExpandableOccurred (es :: Set Type) (es' :: Set Type) = Expandable Occurred es es'
- type MergeableOccurred (es :: Set Type) (es' :: Set Type) (mrg :: Set Type) = Mergeable Occurred es es' mrg
- type Handle (m :: Type -> Type) (es :: Set Type) = EvReqs es -> m (EvOccs es)
- type Handle' (m :: Type -> Type) (es :: Set Type) = EvReqs es -> m (Maybe (EvOccs es))
- retry :: forall m (es :: Set Type). Monad m => Handle' m es -> Handle m es
- sleep :: forall (es :: Set Type). Int -> Handle' IO es -> Handle' IO es
- sleepIfNothing :: forall (es :: Set Type). Int -> Handle' IO es -> Handle' IO es
- expand :: forall m (es :: Set Type) (es' :: Set Type). (Applicative m, ExpandableHandle es es') => Handle' m es -> Handle' m es'
- before :: forall m (es :: Set Type) (es' :: Set Type). (Monad m, ExpandableHandle es (es :+: es'), ExpandableHandle es' (es :+: es')) => Handle' m es -> Handle' m es' -> Handle' m (es :+: es')
- merge :: forall m (es :: Set Type) (es' :: Set Type). (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')
- type HandleSt st (m :: Type -> Type) (es :: Set Type) = EvReqs es -> St st m (EvOccs es)
- type HandleSt' st (m :: Type -> Type) (es :: Set Type) = EvReqs es -> St st m (Maybe (EvOccs es))
- type St st (m :: Type -> Type) a = st -> m (a, st)
- liftHandle :: forall m (es :: Set Type) st. Functor m => Handle m es -> HandleSt st m es
- liftHandle' :: forall m (es :: Set Type) st. Functor m => Handle' m es -> HandleSt' st m es
- liftSt :: Functor m => m r -> St st m r
- retrySt :: forall m st (es :: Set Type). Monad m => HandleSt' st m es -> HandleSt st m es
- expandSt :: forall m (es :: Set Type) (es' :: Set Type) st. (Applicative m, ExpandableHandle es es') => HandleSt' st m es -> HandleSt' st m es'
- beforeSt :: forall m (es :: Set Type) (es' :: Set Type) st. (Monad m, ExpandableHandle es (es :+: es'), ExpandableHandle es' (es :+: es')) => HandleSt' st m es -> HandleSt' st m es' -> HandleSt' st m (es :+: es')
- mergeSt :: forall m (es :: Set Type) (es' :: Set Type) st. (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')
- type HandleIo' i o (m :: Type -> Type) (es :: Set Type) = EvReqs es -> i -> m (Maybe (EvOccs es), o)
- pushInput :: forall a st m (es :: Set Type). (a -> HandleSt' st m es) -> HandleIo' (a, st) st m es
- popInput :: forall a st m (es :: Set Type). HandleIo' (a, st) st m es -> a -> HandleSt' st m es
- expandIo :: forall m (es :: Set Type) (es' :: Set Type) i o. (Applicative m, ExpandableHandle es es') => HandleIo' i o m es -> (i -> m o) -> HandleIo' i o m es'
- beforeIo :: forall m (es :: Set Type) (es' :: Set Type) i x o. (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')
- mergeIo :: forall m (es :: Set Type) (es' :: Set Type) i x o. (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')
Constraint
type ExpandableHandle (es :: Set Type) (es' :: Set Type) = (ExpandableOccurred es es', Collapsable es' es) Source #
type ExpandableOccurred (es :: Set Type) (es' :: Set Type) = Expandable Occurred es es' Source #
type MergeableOccurred (es :: Set Type) (es' :: Set Type) (mrg :: Set Type) = Mergeable Occurred es es' mrg Source #
Plain Handle
Type
Composer
expand :: forall m (es :: Set Type) (es' :: Set Type). (Applicative m, ExpandableHandle es es') => Handle' m es -> Handle' m es' Source #
before :: forall m (es :: Set Type) (es' :: Set Type). (Monad m, ExpandableHandle es (es :+: es'), ExpandableHandle es' (es :+: es')) => Handle' m es -> Handle' m es' -> Handle' m (es :+: es') infixr 5 Source #
merge :: forall m (es :: Set Type) (es' :: Set Type). (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 :: Type -> Type) (es :: Set Type) = EvReqs es -> St st m (Maybe (EvOccs es)) Source #
type HandleSt' st m es = HandleIo' st st m es
liftHandle' :: forall m (es :: Set Type) st. Functor m => Handle' m es -> HandleSt' st m es Source #
Composer
expandSt :: forall m (es :: Set Type) (es' :: Set Type) st. (Applicative m, ExpandableHandle es es') => HandleSt' st m es -> HandleSt' st m es' Source #
beforeSt :: forall m (es :: Set Type) (es' :: Set Type) st. (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 :: forall m (es :: Set Type) (es' :: Set Type) st. (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 :: Type -> Type) (es :: Set Type) = EvReqs es -> i -> m (Maybe (EvOccs es), o) Source #
pushInput :: forall a st m (es :: Set Type). (a -> HandleSt' st m es) -> HandleIo' (a, st) st m es Source #
popInput :: forall a st m (es :: Set Type). HandleIo' (a, st) st m es -> a -> HandleSt' st m es Source #
Composer
expandIo :: forall m (es :: Set Type) (es' :: Set Type) i o. (Applicative m, ExpandableHandle es es') => HandleIo' i o m es -> (i -> m o) -> HandleIo' i o m es' Source #