Safe Haskell | None |
---|---|
Language | Haskell2010 |
Yael.Eff.Builder
Synopsis
- runEffTWith :: EffStack f => Builder f m -> EffT (EffList (ToEffList f)) m a -> m a
- wrapping :: (f m -> g m -> g m) -> (f m -> g m) -> f m -> g m
- data EffList fs m where
- class EffStack f where
- data EffectIdentity m
- data EffectBuilder s (m :: * -> *)
- data EffectProxy
- type family Effect f t where ...
Documentation
runEffTWith :: EffStack f => Builder f m -> EffT (EffList (ToEffList f)) m a -> m a Source #
Run an effectful computation using a set of effect handlers that are implemented in terms of each other.
Helper datatypes and classes in case you want to write EffStack
instances by hand (but hint: you shouldn't)
class EffStack f where Source #
Minimal complete definition
Nothing
Methods
build :: Builder f m -> EffList (ToEffList f) m Source #
build :: (GTo (Rep (f (EffectIdentity m))) (Rep (f EffectProxy)) m, GApply (Rep (Builder f m)) (Rep (f (EffectIdentity m))) (GToEffList (Rep (f EffectProxy))) m, Generic (f (EffectIdentity m)), Generic (Builder f m), ToEffList f ~ GToEffList (Rep (f EffectProxy))) => Builder f m -> EffList (ToEffList f) m Source #
toEffList :: f (EffectIdentity m) -> EffList (ToEffList f) m Source #
toEffList :: (Generic (f (EffectIdentity m)), GTo (Rep (f (EffectIdentity m))) (Rep (f EffectProxy)) m, ToEffList f ~ GToEffList (Rep (f EffectProxy))) => f (EffectIdentity m) -> EffList (ToEffList f) m Source #
data EffectIdentity m Source #
data EffectBuilder s (m :: * -> *) Source #
data EffectProxy Source #
type family Effect f t where ... Source #
Equations
Effect (EffectIdentity m) t = t m | |
Effect (EffectBuilder s m) t = EffList (ToEffList s) m -> t m | |
Effect EffectProxy t = Proxy t |