Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- newtype IntroC (top :: [Effect]) (new :: [Effect]) (m :: * -> *) a = IntroC {
- runIntroC :: m a
- type RestDerivs top new m = StripPrefix new (StripPrefix top (Derivs m))
- type IntroTopC = IntroC '[]
- type IntroUnderC e = IntroC '[e]
- type IntroUnderManyC = IntroC
- type HeadEff e m = (IntroConsistent '[] '[e] m, Carrier m)
- type HeadEffs new m = (IntroConsistent '[] new m, Carrier m)
- type IntroConsistent top new m = Append top (Append new (StripPrefix new (StripPrefix top (Derivs m)))) ~ Derivs m
- introUnderMany :: forall top new m a. (KnownList top, KnownList new, IntroConsistent top new m) => IntroUnderManyC top new m a -> m a
- introUnder :: forall new e m a. (KnownList new, IntroConsistent '[e] new m) => IntroUnderC e new m a -> m a
- introUnder1 :: forall new e m a. IntroConsistent '[e] '[new] m => IntroUnderC e '[new] m a -> m a
- intro :: forall new m a. (KnownList new, IntroConsistent '[] new m) => IntroTopC new m a -> m a
- intro1 :: forall e m a. IntroConsistent '[] '[e] m => IntroTopC '[e] m a -> m a
Documentation
newtype IntroC (top :: [Effect]) (new :: [Effect]) (m :: * -> *) a Source #
Instances
type RestDerivs top new m = StripPrefix new (StripPrefix top (Derivs m)) Source #
type IntroUnderC e = IntroC '[e] Source #
type IntroUnderManyC = IntroC Source #
Synonym for IntroC
to match introUnderMany
type HeadEff e m = (IntroConsistent '[] '[e] m, Carrier m) Source #
type HeadEffs new m = (IntroConsistent '[] new m, Carrier m) Source #
type IntroConsistent top new m = Append top (Append new (StripPrefix new (StripPrefix top (Derivs m)))) ~ Derivs m Source #
A constraint that the effect stack of m
--
--
begins with Derivs
mAppend top new
.
introUnderMany :: forall top new m a. (KnownList top, KnownList new, IntroConsistent top new m) => IntroUnderManyC top new m a -> m a Source #
Introduce multiple effects under a number of top effects of the effect stack -- or rather, reveal those effects which were previously hidden.
Derivs
(IntroUnderManyC
top new m) = Append top (StripPrefix
(Append top new) (Derivs
m))
Prims
(IntroUnderManyC
top new m) =Prims
m
introUnder :: forall new e m a. (KnownList new, IntroConsistent '[e] new m) => IntroUnderC e new m a -> m a Source #
Introduce multiple effects under the top effect of the effect stack -- or rather, reveal those effects which were previously hidden.
Derivs
(IntroUnderC
e new m) = e ':StripPrefix
(e ': new) (Derivs
m)
Prims
(IntroUnderC
e new m) =Prims
m
introUnder1 :: forall new e m a. IntroConsistent '[e] '[new] m => IntroUnderC e '[new] m a -> m a Source #
Introduce an effect under the top effect of the effect stack -- or rather, reveal that effect which was previously hidden.
Derivs
(IntroUnderC
e '[new] m) = e ':StripPrefix
[e, new] (Derivs
m)
Prims
(IntroUnderC
e '[new] m) =Prims
m