packages feed

data-effects-core 0.4.0.2 → 0.4.1.0

raw patch · 3 files changed

+34/−6 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Control.Effect: type e ~~> f = e f ~> f
- Data.Effect: instance Data.Effect.HFunctor.HFunctor (Data.Effect.Catch w)
- Data.Effect.OpenUnion: type e `In` es = MemberBy IdentityResolver (IdentityDiscriminator e) e es
- Data.Effect.Tag: type e # tag = Tagged tag e
+ Control.Effect: ($dmhoist) :: (Free c ff, c (ff g)) => (forall x. () => f x -> g x) -> ff f a -> ff g a
+ Data.Effect: class PolyHFunctor (e :: Effect)
+ Data.Effect: instance Data.Effect.HFunctor.HFunctor (Data.Effect.Catch e)
+ Data.Effect: instance Data.Effect.PolyHFunctor (Data.Effect.Ask r)
+ Data.Effect: instance Data.Effect.PolyHFunctor (Data.Effect.CC ref)
+ Data.Effect: instance Data.Effect.PolyHFunctor (Data.Effect.Catch e)
+ Data.Effect: instance Data.Effect.PolyHFunctor (Data.Effect.Emb e)
+ Data.Effect: instance Data.Effect.PolyHFunctor (Data.Effect.Local r)
+ Data.Effect: instance Data.Effect.PolyHFunctor (Data.Effect.State s)
+ Data.Effect: instance Data.Effect.PolyHFunctor (Data.Effect.Tell w)
+ Data.Effect: instance Data.Effect.PolyHFunctor (Data.Effect.Throw e)
+ Data.Effect: instance Data.Effect.PolyHFunctor (Data.Effect.WriterH w)
+ Data.Effect: instance Data.Effect.PolyHFunctor Data.Effect.Choose
+ Data.Effect: instance Data.Effect.PolyHFunctor Data.Effect.ChooseH
+ Data.Effect: instance Data.Effect.PolyHFunctor Data.Effect.Empty
+ Data.Effect: instance Data.Effect.PolyHFunctor Data.Effect.Fail
+ Data.Effect: instance Data.Effect.PolyHFunctor Data.Effect.Fix
+ Data.Effect: instance Data.Effect.PolyHFunctor Data.Effect.Nop
+ Data.Effect.OpenUnion: class PolyHFunctors (es :: k)
+ Data.Effect.OpenUnion: instance (Data.Effect.PolyHFunctor e, Data.Effect.OpenUnion.PolyHFunctors es) => Data.Effect.OpenUnion.PolyHFunctors (e : es)
+ Data.Effect.OpenUnion: instance Data.Effect.OpenUnion.PolyHFunctors '[]
+ Data.Effect.OpenUnion: type (e :: Effect) :> (es :: [Effect]) = MemberBy LabelResolver Discriminator LabelResolver e e es
+ Data.Effect.OpenUnion: type In (e :: Effect) (es :: [Effect]) = MemberBy IdentityResolver IdentityDiscriminator e e es
+ Data.Effect.Tag: type (e :: Effect) # (tag :: k) = Tagged tag e
- Control.Effect: Eff :: ff (Union es (Eff ff es)) a -> Eff ff es a
+ Control.Effect: Eff :: ff (Union es (Eff ff es)) a -> Eff (ff :: (Type -> Type) -> Type -> Type) (es :: [Effect]) a
- Control.Effect: [unEff] :: Eff ff es a -> ff (Union es (Eff ff es)) a
+ Control.Effect: [unEff] :: Eff (ff :: (Type -> Type) -> Type -> Type) (es :: [Effect]) a -> ff (Union es (Eff ff es)) a
- Control.Effect: callCC_ :: forall ref a b es ff c. (CC ref :> es, Monad (Eff ff es), Free c ff) => ((a -> Eff ff es b) -> Eff ff es a) -> Eff ff es a
+ Control.Effect: callCC_ :: forall (ref :: Type -> Type) a b (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (CC ref :> es, Monad (Eff ff es), Free c ff) => ((a -> Eff ff es b) -> Eff ff es a) -> Eff ff es a
- Control.Effect: class (forall f. c (ff f)) => Free c (ff :: (Type -> Type) -> Type -> Type) | ff -> c
+ Control.Effect: class forall (f :: Type -> Type). () => c ff f => Free (c :: Type -> Type -> Constraint) (ff :: Type -> Type -> Type -> Type) | ff -> c
- Control.Effect: convertEff :: forall ff gg es a c c'. (Free c ff, Free c' gg, forall r. c (gg r)) => Eff ff es a -> Eff gg es a
+ Control.Effect: convertEff :: forall (ff :: (Type -> Type) -> Type -> Type) (gg :: (Type -> Type) -> Type -> Type) (es :: [Effect]) a (c :: (Type -> Type) -> Constraint) (c' :: (Type -> Type) -> Constraint). (Free c ff, Free c' gg, forall (r :: Type -> Type). () => c (gg r)) => Eff ff es a -> Eff gg es a
- Control.Effect: convertFree :: (Free c ff, Free c' gg, c (gg r)) => ff r a -> gg r a
+ Control.Effect: convertFree :: forall (c :: (Type -> Type) -> Constraint) ff (c' :: (Type -> Type) -> Constraint) gg (r :: Type -> Type) a. (Free c ff, Free c' gg, c (gg r)) => ff r a -> gg r a
- Control.Effect: emb :: forall f es ff a c. (Emb f :> es, Free c ff) => f a -> Eff ff es a
+ Control.Effect: emb :: forall f (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (Emb f :> es, Free c ff) => f a -> Eff ff es a
- Control.Effect: hoist :: (Free c ff, c (ff g)) => (forall x. f x -> g x) -> ff f a -> ff g a
+ Control.Effect: hoist :: Free c ff => (forall x. () => f x -> g x) -> ff f a -> ff g a
- Control.Effect: newtype Eff ff es a
+ Control.Effect: newtype Eff (ff :: Type -> Type -> Type -> Type) (es :: [Effect]) a
- Control.Effect: pass :: forall w a es ff c. (Tell w :> es, WriterH w :> es, Monad (Eff ff es), Free c ff) => Eff ff es (w -> w, a) -> Eff ff es a
+ Control.Effect: pass :: forall w a (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (Tell w :> es, WriterH w :> es, Monad (Eff ff es), Free c ff) => Eff ff es (w -> w, a) -> Eff ff es a
- Control.Effect: perform :: forall e es ff a c. (e :> es, Free c ff) => e (Eff ff es) a -> Eff ff es a
+ Control.Effect: perform :: forall e (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (e :> es, Free c ff) => e (Eff ff es) a -> Eff ff es a
- Control.Effect: perform' :: forall key e es ff a c. (Has key e es, Free c ff) => e (Eff ff es) a -> Eff ff es a
+ Control.Effect: perform' :: forall {k} (key :: k) e (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (Has key e es, Free c ff) => e (Eff ff es) a -> Eff ff es a
- Control.Effect: perform'' :: forall tag e es ff a c. ((e # tag) :> es, Free c ff) => e (Eff ff es) a -> Eff ff es a
+ Control.Effect: perform'' :: forall {k} (tag :: k) e (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). ((e # tag) :> es, Free c ff) => e (Eff ff es) a -> Eff ff es a
- Control.Effect: runFree :: (Free c ff, c g) => (forall x. f x -> g x) -> ff f a -> g a
+ Control.Effect: runFree :: (Free c ff, c g) => (forall x. () => f x -> g x) -> ff f a -> g a
- Control.Effect: send :: forall e es ff a c. (e `In` es, Free c ff) => e (Eff ff es) a -> Eff ff es a
+ Control.Effect: send :: forall e (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (In e es, Free c ff) => e (Eff ff es) a -> Eff ff es a
- Control.Effect: sendAt :: forall i es ff a c. (KnownIndex i es, Free c ff) => At i es (Eff ff es) a -> Eff ff es a
+ Control.Effect: sendAt :: forall (i :: Nat) (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (KnownIndex i es, Free c ff) => At i es (Eff ff es) a -> Eff ff es a
- Control.Effect: sendFor :: forall e es ff a c. (KnownOrder e, Free c ff) => Membership e es -> e (Eff ff es) a -> Eff ff es a
+ Control.Effect: sendFor :: forall e (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (KnownOrder e, Free c ff) => Membership e es -> e (Eff ff es) a -> Eff ff es a
- Control.Effect: sub :: forall ref a b es ff c. (CC ref :> es, Monad (Eff ff es), Free c ff) => (ref a -> Eff ff es b) -> (a -> Eff ff es b) -> Eff ff es b
+ Control.Effect: sub :: forall ref a b (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (CC ref :> es, Monad (Eff ff es), Free c ff) => (ref a -> Eff ff es b) -> (a -> Eff ff es b) -> Eff ff es b
- Control.Effect: type (h :: (Type -> Type) -> Type -> Type) $$ f = h f
+ Control.Effect: type (h :: Type -> Type -> Type -> Type) $$ (f :: Type -> Type) = h f
- Control.Effect: type f ~> g = forall (x :: Type). f x -> g x
+ Control.Effect: type (f :: Type -> Type) ~> (g :: Type -> Type) = forall x. () => f x -> g x
- Control.Effect.Interpret: interpose :: forall e es ff a c. (e :> es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Interpret: interpose :: forall (e :: Effect) (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (e :> es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
- Control.Effect.Interpret: interposeFor :: forall e es ff a c. (KnownOrder e, Free c ff) => Membership e es -> (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Interpret: interposeFor :: forall (e :: Effect) (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (KnownOrder e, Free c ff) => Membership e es -> (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
- Control.Effect.Interpret: interposeIn :: forall e es ff a c. (e `In` es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Interpret: interposeIn :: forall (e :: Effect) (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (In e es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
- Control.Effect.Interpret: interposeOn :: forall key e es ff a c. (Has key e es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Interpret: interposeOn :: forall {k} (key :: k) (e :: Effect) (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (Has key e es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
- Control.Effect.Interpret: interpret :: forall e es ff a c. (KnownOrder e, Free c ff) => (e ~~> Eff ff es) -> Eff ff (e ': es) a -> Eff ff es a
+ Control.Effect.Interpret: interpret :: forall (e :: Effect) (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (KnownOrder e, Free c ff) => (e ~~> Eff ff es) -> Eff ff (e ': es) a -> Eff ff es a
- Control.Effect.Interpret: interpretAll :: forall es es' ff a c. Free c ff => (Union es ~~> Eff ff es') -> Eff ff es a -> Eff ff es' a
+ Control.Effect.Interpret: interpretAll :: forall (es :: [Effect]) (es' :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). Free c ff => (Union es ~~> Eff ff es') -> Eff ff es a -> Eff ff es' a
- Control.Effect.Interpret: interprets :: forall es r ff a c. (KnownLength es, Free c ff) => (Union es ~~> Eff ff r) -> Eff ff (es ++ r) a -> Eff ff r a
+ Control.Effect.Interpret: interprets :: forall (es :: [Effect]) (r :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (KnownLength es, Free c ff) => (Union es ~~> Eff ff r) -> Eff ff (es ++ r) a -> Eff ff r a
- Control.Effect.Interpret: iterAllEff :: forall es f ff a c. (Free c ff, c f) => (Union es ~~> f) -> Eff ff es a -> f a
+ Control.Effect.Interpret: iterAllEff :: forall (es :: [Effect]) f (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (Free c ff, c f) => (Union es ~~> f) -> Eff ff es a -> f a
- Control.Effect.Interpret: preinterpose :: forall e es ff a c. (e :> es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Interpret: preinterpose :: forall (e :: Effect) (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (e :> es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
- Control.Effect.Interpret: preinterposeFor :: forall e es ff a c. (KnownOrder e, Free c ff) => Membership e es -> (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Interpret: preinterposeFor :: forall (e :: Effect) (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (KnownOrder e, Free c ff) => Membership e es -> (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
- Control.Effect.Interpret: preinterposeIn :: forall e es ff a c. (e `In` es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Interpret: preinterposeIn :: forall (e :: Effect) (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (In e es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
- Control.Effect.Interpret: preinterposeOn :: forall key e es ff a c. (Has key e es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Interpret: preinterposeOn :: forall {k} (key :: k) (e :: Effect) (es :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (Has key e es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a
- Control.Effect.Interpret: reinterpret :: forall e es es' ff a c. (Suffix es es', KnownOrder e, Free c ff) => (e ~~> Eff ff es') -> Eff ff (e ': es) a -> Eff ff es' a
+ Control.Effect.Interpret: reinterpret :: forall (e :: Effect) (es :: [Effect]) (es' :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (Suffix es es', KnownOrder e, Free c ff) => (e ~~> Eff ff es') -> Eff ff (e ': es) a -> Eff ff es' a
- Control.Effect.Interpret: reinterprets :: forall es r r' ff a c. (Suffix r r', KnownLength es, Free c ff) => (Union es (Eff ff r') ~> Eff ff r') -> Eff ff (es ++ r) a -> Eff ff r' a
+ Control.Effect.Interpret: reinterprets :: forall (es :: [Effect]) (r :: [Effect]) (r' :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). (Suffix r r', KnownLength es, Free c ff) => (Union es (Eff ff r') ~> Eff ff r') -> Eff ff (es ++ r) a -> Eff ff r' a
- Control.Effect.Interpret: runEff :: (Free c ff, c f) => Eff ff '[Emb f] a -> f a
+ Control.Effect.Interpret: runEff :: forall (c :: (Type -> Type) -> Constraint) (ff :: (Type -> Type) -> Type -> Type) f a. (Free c ff, c f) => Eff ff '[Emb f] a -> f a
- Control.Effect.Interpret: runPure :: (Free c ff, c Identity) => Eff ff '[] a -> a
+ Control.Effect.Interpret: runPure :: forall (c :: (Type -> Type) -> Constraint) (ff :: (Type -> Type) -> Type -> Type) a. (Free c ff, c Identity) => Eff ff ('[] :: [Effect]) a -> a
- Control.Effect.Transform: onlyFOEs :: forall es a ff c. (Free c ff, WeakenHOEs es) => Eff ff (RemoveHOEs es) a -> Eff ff es a
+ Control.Effect.Transform: onlyFOEs :: forall (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (Free c ff, WeakenHOEs es) => Eff ff (RemoveHOEs es) a -> Eff ff es a
- Control.Effect.Transform: raise :: forall e es a ff c. Free c ff => Eff ff es a -> Eff ff (e ': es) a
+ Control.Effect.Transform: raise :: forall (e :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). Free c ff => Eff ff es a -> Eff ff (e ': es) a
- Control.Effect.Transform: raisePrefix :: forall es' es a ff c. (KnownLength es', Free c ff) => Eff ff es a -> Eff ff (es' ++ es) a
+ Control.Effect.Transform: raisePrefix :: forall (es' :: [Effect]) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (KnownLength es', Free c ff) => Eff ff es a -> Eff ff (es' ++ es) a
- Control.Effect.Transform: raisePrefix1 :: forall fs x es a ff c. (KnownLength fs, Free c ff) => Eff ff es a -> Eff ff (Each fs x ++ es) a
+ Control.Effect.Transform: raisePrefix1 :: forall {k} (fs :: [k -> Effect]) (x :: k) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (KnownLength fs, Free c ff) => Eff ff es a -> Eff ff (Each fs x ++ es) a
- Control.Effect.Transform: raiseSuffix :: forall es' es a ff c. Free c ff => Eff ff es a -> Eff ff (es ++ es') a
+ Control.Effect.Transform: raiseSuffix :: forall (es' :: [Effect]) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). Free c ff => Eff ff es a -> Eff ff (es ++ es') a
- Control.Effect.Transform: raiseUnder :: forall e0 e1 es a ff c. Free c ff => Eff ff (e0 ': es) a -> Eff ff (e0 ': (e1 ': es)) a
+ Control.Effect.Transform: raiseUnder :: forall (e0 :: Effect) (e1 :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). Free c ff => Eff ff (e0 ': es) a -> Eff ff (e0 ': (e1 ': es)) a
- Control.Effect.Transform: raises :: forall es es' a ff c. (Suffix es es', Free c ff) => Eff ff es a -> Eff ff es' a
+ Control.Effect.Transform: raises :: forall (es :: [Effect]) (es' :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (Suffix es es', Free c ff) => Eff ff es a -> Eff ff es' a
- Control.Effect.Transform: raisesUnder :: forall e es es' a ff c. (Suffix es es', Free c ff) => Eff ff (e ': es) a -> Eff ff (e ': es') a
+ Control.Effect.Transform: raisesUnder :: forall (e :: Effect) (es :: [Effect]) (es' :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (Suffix es es', Free c ff) => Eff ff (e ': es) a -> Eff ff (e ': es') a
- Control.Effect.Transform: raisesUnders :: forall es es' a ff c. (SuffixUnder es es', Free c ff) => Eff ff es a -> Eff ff es' a
+ Control.Effect.Transform: raisesUnders :: forall (es :: [Effect]) (es' :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (SuffixUnder es es', Free c ff) => Eff ff es a -> Eff ff es' a
- Control.Effect.Transform: rewrite :: forall e es a ff c. (e :> es, Free c ff) => (e (Eff ff es) ~> e (Eff ff es)) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Transform: rewrite :: forall (e :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (e :> es, Free c ff) => (e (Eff ff es) ~> e (Eff ff es)) -> Eff ff es a -> Eff ff es a
- Control.Effect.Transform: rewriteFor :: forall e es a ff c. (KnownOrder e, Free c ff) => Membership e es -> (e (Eff ff es) ~> e (Eff ff es)) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Transform: rewriteFor :: forall (e :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (KnownOrder e, Free c ff) => Membership e es -> (e (Eff ff es) ~> e (Eff ff es)) -> Eff ff es a -> Eff ff es a
- Control.Effect.Transform: rewriteIn :: forall e es a ff c. (e `In` es, Free c ff) => (e (Eff ff es) ~> e (Eff ff es)) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Transform: rewriteIn :: forall (e :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (In e es, Free c ff) => (e (Eff ff es) ~> e (Eff ff es)) -> Eff ff es a -> Eff ff es a
- Control.Effect.Transform: rewriteOn :: forall key e es a ff c. (Has key e es, Free c ff) => (e (Eff ff es) ~> e (Eff ff es)) -> Eff ff es a -> Eff ff es a
+ Control.Effect.Transform: rewriteOn :: forall {k} (key :: k) (e :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (Has key e es, Free c ff) => (e (Eff ff es) ~> e (Eff ff es)) -> Eff ff es a -> Eff ff es a
- Control.Effect.Transform: subsume :: forall e es a ff c. (e `In` es, Free c ff) => Eff ff (e ': es) a -> Eff ff es a
+ Control.Effect.Transform: subsume :: forall (e :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (In e es, Free c ff) => Eff ff (e ': es) a -> Eff ff es a
- Control.Effect.Transform: subsumeUnder :: forall e1 e0 es a ff c. (e1 `In` es, KnownOrder e0, Free c ff) => Eff ff (e0 ': (e1 ': es)) a -> Eff ff (e0 ': es) a
+ Control.Effect.Transform: subsumeUnder :: forall (e1 :: Effect) (e0 :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (In e1 es, KnownOrder e0, Free c ff) => Eff ff (e0 ': (e1 ': es)) a -> Eff ff (e0 ': es) a
- Control.Effect.Transform: tag :: forall tag e es a ff c. (KnownOrder e, KnownOrder (e # tag), Free c ff) => Eff ff (e ': es) a -> Eff ff ((e # tag) ': es) a
+ Control.Effect.Transform: tag :: forall {k} (tag :: k) (e :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (KnownOrder e, KnownOrder (e # tag), Free c ff) => Eff ff (e ': es) a -> Eff ff ((e # tag) ': es) a
- Control.Effect.Transform: transAll :: forall es es' ff a c. Free c ff => (Union es (Eff ff es') ~> Union es' (Eff ff es')) -> Eff ff es a -> Eff ff es' a
+ Control.Effect.Transform: transAll :: forall (es :: [Effect]) (es' :: [Effect]) (ff :: (Type -> Type) -> Type -> Type) a (c :: (Type -> Type) -> Constraint). Free c ff => (Union es (Eff ff es') ~> Union es' (Eff ff es')) -> Eff ff es a -> Eff ff es' a
- Control.Effect.Transform: transform :: forall e e' es a ff c. (KnownOrder e, KnownOrder e', Free c ff) => (e (Eff ff (e' ': es)) ~> e' (Eff ff (e' ': es))) -> Eff ff (e ': es) a -> Eff ff (e' ': es) a
+ Control.Effect.Transform: transform :: forall (e :: Effect) (e' :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (KnownOrder e, KnownOrder e', Free c ff) => (e (Eff ff (e' ': es)) ~> e' (Eff ff (e' ': es))) -> Eff ff (e ': es) a -> Eff ff (e' ': es) a
- Control.Effect.Transform: translate :: forall e e' es a ff c. (KnownOrder e, e' :> es, Free c ff) => (e (Eff ff es) ~> e' (Eff ff es)) -> Eff ff (e ': es) a -> Eff ff es a
+ Control.Effect.Transform: translate :: forall (e :: Effect) (e' :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (KnownOrder e, e' :> es, Free c ff) => (e (Eff ff es) ~> e' (Eff ff es)) -> Eff ff (e ': es) a -> Eff ff es a
- Control.Effect.Transform: translateFor :: forall e e' es a ff c. (KnownOrder e, KnownOrder e', Free c ff) => Membership e' es -> (e (Eff ff es) ~> e' (Eff ff es)) -> Eff ff (e ': es) a -> Eff ff es a
+ Control.Effect.Transform: translateFor :: forall (e :: Effect) (e' :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (KnownOrder e, KnownOrder e', Free c ff) => Membership e' es -> (e (Eff ff es) ~> e' (Eff ff es)) -> Eff ff (e ': es) a -> Eff ff es a
- Control.Effect.Transform: translateIn :: forall e e' es a ff c. (KnownOrder e, e' `In` es, Free c ff) => (e (Eff ff es) ~> e' (Eff ff es)) -> Eff ff (e ': es) a -> Eff ff es a
+ Control.Effect.Transform: translateIn :: forall (e :: Effect) (e' :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (KnownOrder e, In e' es, Free c ff) => (e (Eff ff es) ~> e' (Eff ff es)) -> Eff ff (e ': es) a -> Eff ff es a
- Control.Effect.Transform: translateOn :: forall key e e' es a ff c. (KnownOrder e, Has key e' es, Free c ff) => (e (Eff ff es) ~> e' (Eff ff es)) -> Eff ff (e ': es) a -> Eff ff es a
+ Control.Effect.Transform: translateOn :: forall {k} (key :: k) (e :: Effect) (e' :: Effect) (es :: [Effect]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (KnownOrder e, Has key e' es, Free c ff) => (e (Eff ff es) ~> e' (Eff ff es)) -> Eff ff (e ': es) a -> Eff ff es a
- Control.Effect.Transform: untag :: forall tag e es a ff c. (KnownOrder e, KnownOrder (e # tag), Free c ff) => Eff ff ((e # tag) ': es) a -> Eff ff (e ': es) a
+ Control.Effect.Transform: untag :: forall {k} (tag :: k) (e :: Effect) (es :: [(Type -> Type) -> Type -> Type]) a (ff :: (Type -> Type) -> Type -> Type) (c :: (Type -> Type) -> Constraint). (KnownOrder e, KnownOrder (e # tag), Free c ff) => Eff ff ((e # tag) ': es) a -> Eff ff (e ': es) a
- Data.Effect: Emb :: e a -> Emb e (f :: Type -> Type) (a :: Type)
+ Data.Effect: Emb :: e a -> Emb (e :: Type -> Type) (f :: Type -> Type) a
- Data.Effect: Unemb :: (forall f. e f a) -> Unemb e a
+ Data.Effect: Unemb :: (forall (f :: k). () => e f a) -> Unemb (e :: k -> k1 -> Type) (a :: k1)
- Data.Effect: [Ask] :: Ask r f r
+ Data.Effect: [Ask] :: forall r (a :: Type -> Type). Ask r a r
- Data.Effect: [Catch] :: f a -> (e -> f a) -> Catch e f a
+ Data.Effect: [Catch] :: forall (a :: Type -> Type) b e. a b -> (e -> a b) -> Catch e a b
- Data.Effect: [Censor] :: (w -> w) -> f a -> WriterH w f a
+ Data.Effect: [Censor] :: forall w (a :: Type -> Type) b. (w -> w) -> a b -> WriterH w a b
- Data.Effect: [ChooseH] :: f a -> f a -> ChooseH f a
+ Data.Effect: [ChooseH] :: forall (a :: Type -> Type) b. a b -> a b -> ChooseH a b
- Data.Effect: [Choose] :: Choose f Bool
+ Data.Effect: [Choose] :: forall (a :: Type -> Type). Choose a Bool
- Data.Effect: [Efix] :: (a -> f a) -> Fix f a
+ Data.Effect: [Efix] :: forall b (a :: Type -> Type). (b -> a b) -> Fix a b
- Data.Effect: [Empty] :: Empty f a
+ Data.Effect: [Empty] :: forall (a :: Type -> Type) b. Empty a b
- Data.Effect: [Fail] :: String -> Fail f a
+ Data.Effect: [Fail] :: forall (a :: Type -> Type) b. String -> Fail a b
- Data.Effect: [Get] :: State s f s
+ Data.Effect: [Get] :: forall s (a :: Type -> Type). State s a s
- Data.Effect: [Jump] :: ref a -> a -> CC ref f b
+ Data.Effect: [Jump] :: forall (ref :: Type -> Type) a1 (a :: Type -> Type) b. ref a1 -> a1 -> CC ref a b
- Data.Effect: [Listen] :: f a -> WriterH w f (w, a)
+ Data.Effect: [Listen] :: forall (a :: Type -> Type) a1 w. a a1 -> WriterH w a (w, a1)
- Data.Effect: [Local] :: (r -> r) -> f a -> Local r f a
+ Data.Effect: [Local] :: forall r (a :: Type -> Type) b. (r -> r) -> a b -> Local r a b
- Data.Effect: [Put] :: s -> State s f ()
+ Data.Effect: [Put] :: forall s (a :: Type -> Type). s -> State s a ()
- Data.Effect: [SubFork] :: CC ref f (Either (ref a) a)
+ Data.Effect: [SubFork] :: forall (ref :: Type -> Type) (a :: Type -> Type) a1. CC ref a (Either (ref a1) a1)
- Data.Effect: [Tell] :: w -> Tell w f ()
+ Data.Effect: [Tell] :: forall w (a :: Type -> Type). w -> Tell w a ()
- Data.Effect: [Throw] :: e -> Throw e f a
+ Data.Effect: [Throw] :: forall e (a :: Type -> Type) b. e -> Throw e a b
- Data.Effect: [WithRunInBase] :: ((forall x. f x -> b x) -> b a) -> UnliftBase b f a
+ Data.Effect: [WithRunInBase] :: forall (f :: Type -> Type) (b :: Type -> Type) a. ((forall x. () => f x -> b x) -> b a) -> UnliftBase b f a
- Data.Effect: [getEmb] :: Emb e (f :: Type -> Type) (a :: Type) -> e a
+ Data.Effect: [getEmb] :: Emb (e :: Type -> Type) (f :: Type -> Type) a -> e a
- Data.Effect: [getUnemb] :: Unemb e a -> forall f. e f a
+ Data.Effect: [getUnemb] :: Unemb (e :: k -> k1 -> Type) (a :: k1) -> forall (f :: k). () => e f a
- Data.Effect: class (OrderOf e ~ 'FirstOrder, forall f g a. Coercible (e f a) (e g a)) => FirstOrder (e :: Effect)
+ Data.Effect: class (OrderOf e ~ 'FirstOrder, forall (f :: Type -> Type) (g :: Type -> Type) a. () => Coercible e f a e g a) => FirstOrder (e :: Effect)
- Data.Effect: data Ask r :: Effect
+ Data.Effect: data Ask r (a :: Type -> Type) b
- Data.Effect: data CC ref :: Effect
+ Data.Effect: data CC (ref :: Type -> Type) (a :: Type -> Type) b
- Data.Effect: data Catch e :: Effect
+ Data.Effect: data Catch e (a :: Type -> Type) b
- Data.Effect: data Choose :: Effect
+ Data.Effect: data Choose (a :: Type -> Type) b
- Data.Effect: data ChooseH :: Effect
+ Data.Effect: data ChooseH (a :: Type -> Type) b
- Data.Effect: data Empty :: Effect
+ Data.Effect: data Empty (a :: Type -> Type) b
- Data.Effect: data Fail :: Effect
+ Data.Effect: data Fail (a :: Type -> Type) b
- Data.Effect: data Fix :: Effect
+ Data.Effect: data Fix (a :: Type -> Type) b
- Data.Effect: data Local r :: Effect
+ Data.Effect: data Local r (a :: Type -> Type) b
- Data.Effect: data Nop :: Effect
+ Data.Effect: data Nop (a :: Type -> Type) b
- Data.Effect: data State s :: Effect
+ Data.Effect: data State s (a :: Type -> Type) b
- Data.Effect: data Tell w :: Effect
+ Data.Effect: data Tell w (a :: Type -> Type) b
- Data.Effect: data Throw e :: Effect
+ Data.Effect: data Throw e (a :: Type -> Type) b
- Data.Effect: data UnliftBase b f (a :: Type)
+ Data.Effect: data UnliftBase (b :: Type -> Type) (f :: Type -> Type) a
- Data.Effect: data WriterH w :: Effect
+ Data.Effect: data WriterH w (a :: Type -> Type) b
- Data.Effect: newtype Emb e (f :: Type -> Type) (a :: Type)
+ Data.Effect: newtype Emb (e :: Type -> Type) (f :: Type -> Type) a
- Data.Effect: newtype Unemb e a
+ Data.Effect: newtype Unemb (e :: k -> k1 -> Type) (a :: k1)
- Data.Effect: type Effect = (Type -> Type) -> Type -> Type
+ Data.Effect: type Effect = Type -> Type -> Type -> Type
- Data.Effect.HFunctor: class HFunctor (ff :: (Type -> Type) -> Type -> Type)
+ Data.Effect.HFunctor: class HFunctor (ff :: Type -> Type -> Type -> Type)
- Data.Effect.HFunctor: hfmap :: HFunctor ff => (forall x. f x -> g x) -> ff f a -> ff g a
+ Data.Effect.HFunctor: hfmap :: HFunctor ff => (forall x. () => f x -> g x) -> ff f a -> ff g a
- Data.Effect.HFunctor.HCont: HCont :: ((f ~> b) -> ff b a) -> HCont ff b f (a :: Type)
+ Data.Effect.HFunctor.HCont: HCont :: ((f ~> b) -> ff b a) -> HCont (ff :: (Type -> Type) -> Type -> Type) (b :: Type -> Type) (f :: Type -> Type) a
- Data.Effect.HFunctor.HCont: [unHCont] :: HCont ff b f (a :: Type) -> (f ~> b) -> ff b a
+ Data.Effect.HFunctor.HCont: [unHCont] :: HCont (ff :: (Type -> Type) -> Type -> Type) (b :: Type -> Type) (f :: Type -> Type) a -> (f ~> b) -> ff b a
- Data.Effect.HFunctor.HCont: newtype HCont ff b f (a :: Type)
+ Data.Effect.HFunctor.HCont: newtype HCont (ff :: Type -> Type -> Type -> Type) (b :: Type -> Type) (f :: Type -> Type) a
- Data.Effect.OpenUnion: (!++) :: forall es es' f a r. KnownLength es => (Union es f a -> r) -> (Union es' f a -> r) -> Union (es ++ es') f a -> r
+ Data.Effect.OpenUnion: (!++) :: forall (es :: [Effect]) (es' :: [Effect]) (f :: Type -> Type) a r. KnownLength es => (Union es f a -> r) -> (Union es' f a -> r) -> Union (es ++ es') f a -> r
- Data.Effect.OpenUnion: (!:) :: Elem e order => (e f a -> r) -> (Union es f a -> r) -> Union (e ': es) f a -> r
+ Data.Effect.OpenUnion: (!:) :: forall (f :: Type -> Type) a r (es :: [Effect]). Elem e order => (e f a -> r) -> (Union es f a -> r) -> Union (e ': es) f a -> r
- Data.Effect.OpenUnion: [UnsafeFirst] :: Ordership 'FirstOrder e f g
+ Data.Effect.OpenUnion: [UnsafeFirst] :: forall (e :: Effect) (f :: Type -> Type) (g :: Type -> Type). Ordership 'FirstOrder e f g
- Data.Effect.OpenUnion: [UnsafeHigher] :: (forall x. g x -> f x) -> Ordership 'HigherOrder e f g
+ Data.Effect.OpenUnion: [UnsafeHigher] :: forall (g :: Type -> Type) (f :: Type -> Type) (e :: Effect). (forall x. () => g x -> f x) -> Ordership 'HigherOrder e f g
- Data.Effect.OpenUnion: [UnsafeUnion] :: {-# UNPACK #-} !Int -> e g a -> {-# UNPACK #-} !EffectOrder -> (forall x. g x -> f x) -> Union es f a
+ Data.Effect.OpenUnion: [UnsafeUnion] :: forall (e :: (Type -> Type) -> Type -> Type) (g :: Type -> Type) a (f :: Type -> Type) (es :: [Effect]). {-# UNPACK #-} !Int -> e g a -> {-# UNPACK #-} !EffectOrder -> (forall x. () => g x -> f x) -> Union es f a
- Data.Effect.OpenUnion: bundleUnion :: forall es es' f a. KnownLength es => Union (es ++ es') f a -> Union (Union es ': es') f a
+ Data.Effect.OpenUnion: bundleUnion :: forall (es :: [Effect]) (es' :: [Effect]) (f :: Type -> Type) a. KnownLength es => Union (es ++ es') f a -> Union (Union es ': es') f a
- Data.Effect.OpenUnion: caseAnyOrder :: HFunctor e => (e f a -> r) -> (Union es f a -> r) -> Union (e ': es) f a -> r
+ Data.Effect.OpenUnion: caseAnyOrder :: forall e (f :: Type -> Type) a r (es :: [Effect]). HFunctor e => (e f a -> r) -> (Union es f a -> r) -> Union (e ': es) f a -> r
- Data.Effect.OpenUnion: class (order ~ OrderOf e) => Elem e order
+ Data.Effect.OpenUnion: class order ~ OrderOf e => Elem (e :: Effect) (order :: EffectOrder)
- Data.Effect.OpenUnion: class (dscr ~ Discriminator resolver e, dscr' ~ Discriminator resolver (HeadOf r)) => ErrorIfNotFound resolver dscr dscr' (e :: Effect) (r :: [Effect]) (w :: [Effect])
+ Data.Effect.OpenUnion: class (dscr ~ Discriminator resolver e, dscr' ~ Discriminator resolver HeadOf r) => ErrorIfNotFound resolver dscr dscr' (e :: Effect) (r :: [Effect]) (w :: [Effect])
- Data.Effect.OpenUnion: class FOEs es
+ Data.Effect.OpenUnion: class FOEs (es :: k)
- Data.Effect.OpenUnion: class (dscr ~ Discriminator resolver e, dscr' ~ Discriminator resolver (HeadOf r)) => FindBy resolver dscr dscr' e r | resolver dscr dscr' r -> e
+ Data.Effect.OpenUnion: class (dscr ~ Discriminator resolver e, dscr' ~ Discriminator resolver HeadOf r) => FindBy resolver dscr dscr' (e :: Effect) (r :: [Effect]) | resolver dscr dscr' r -> e
- Data.Effect.OpenUnion: class KnownLength xs
+ Data.Effect.OpenUnion: class KnownLength (xs :: [k])
- Data.Effect.OpenUnion: class (orderOfHead ~ OrderOf (HeadOf es)) => WeakenHOEs_ es (countF :: Natural) orderOfHead
+ Data.Effect.OpenUnion: class orderOfHead ~ OrderOf HeadOf es => WeakenHOEs_ (es :: [Effect]) (countF :: Natural) (orderOfHead :: EffectOrder)
- Data.Effect.OpenUnion: coerceFOEs :: FOEs es => Union es f a -> Union es g a
+ Data.Effect.OpenUnion: coerceFOEs :: forall (es :: [Effect]) (f :: Type -> Type) a (g :: Type -> Type). FOEs es => Union es f a -> Union es g a
- Data.Effect.OpenUnion: compareMembership :: Membership e es -> Membership e' es -> Maybe (e :~: e')
+ Data.Effect.OpenUnion: compareMembership :: forall (e :: Effect) (es :: [Effect]) (e' :: Effect). Membership e es -> Membership e' es -> Maybe (e :~: e')
- Data.Effect.OpenUnion: continuationOfInterpretation :: Ordership 'HigherOrder e f g -> forall x. g x -> f x
+ Data.Effect.OpenUnion: continuationOfInterpretation :: forall (e :: Effect) f g. Ordership 'HigherOrder e f g -> forall x. () => g x -> f x
- Data.Effect.OpenUnion: data KeyDiscriminator key
+ Data.Effect.OpenUnion: data KeyDiscriminator (key :: k)
- Data.Effect.OpenUnion: data Union (es :: [Effect]) (f :: Type -> Type) (a :: Type)
+ Data.Effect.OpenUnion: data Union (es :: [Effect]) (f :: Type -> Type) a
- Data.Effect.OpenUnion: decomp :: (KnownOrder e, HFunctor e) => Union (e ': es) f a -> Either (e f a) (Union es f a)
+ Data.Effect.OpenUnion: decomp :: forall e (es :: [Effect]) (f :: Type -> Type) a. (KnownOrder e, HFunctor e) => Union (e ': es) f a -> Either (e f a) (Union es f a)
- Data.Effect.OpenUnion: extract :: Elem e order => Union '[e] f a -> e f a
+ Data.Effect.OpenUnion: extract :: forall (f :: Type -> Type) a. Elem e order => Union '[e] f a -> e f a
- Data.Effect.OpenUnion: extractAnyOrder :: HFunctor e => Union es f a -> e f a
+ Data.Effect.OpenUnion: extractAnyOrder :: forall e (es :: [Effect]) (f :: Type -> Type) a. HFunctor e => Union es f a -> e f a
- Data.Effect.OpenUnion: firstOrdership :: FirstOrder e => Ordership 'FirstOrder e f g
+ Data.Effect.OpenUnion: firstOrdership :: forall (e :: Effect) (f :: Type -> Type) (g :: Type -> Type). FirstOrder e => Ordership 'FirstOrder e f g
- Data.Effect.OpenUnion: hfmapDynUnsafeCoerce :: HFunctor e' => EffectOrder -> (forall x. f x -> g x) -> e f a -> e' g a
+ Data.Effect.OpenUnion: hfmapDynUnsafeCoerce :: HFunctor e' => EffectOrder -> (forall x. () => f x -> g x) -> e f a -> e' g a
- Data.Effect.OpenUnion: hfmapUnion :: (forall x. f x -> g x) -> Union es f a -> Union es g a
+ Data.Effect.OpenUnion: hfmapUnion :: forall f g (es :: [Effect]) a. (forall x. () => f x -> g x) -> Union es f a -> Union es g a
- Data.Effect.OpenUnion: higherOrdership :: OrderOf e ~ 'HigherOrder => (forall x. g x -> f x) -> Ordership 'HigherOrder e f g
+ Data.Effect.OpenUnion: higherOrdership :: forall (e :: Effect) g f. OrderOf e ~ 'HigherOrder => (forall x. () => g x -> f x) -> Ordership 'HigherOrder e f g
- Data.Effect.OpenUnion: identityMembership :: forall e es. FindBy IdentityResolver (IdentityDiscriminator e) (IdentityDiscriminator (HeadOf es)) e es => Membership e es
+ Data.Effect.OpenUnion: identityMembership :: forall (e :: Effect) (es :: [Effect]). FindBy IdentityResolver (IdentityDiscriminator e) (IdentityDiscriminator (HeadOf es)) e es => Membership e es
- Data.Effect.OpenUnion: inject :: Elem e order => Membership e es -> e f a -> Union es f a
+ Data.Effect.OpenUnion: inject :: forall (es :: [Effect]) (f :: Type -> Type) a. Elem e order => Membership e es -> e f a -> Union es f a
- Data.Effect.OpenUnion: intVal :: forall n. KnownNat n => Int
+ Data.Effect.OpenUnion: intVal :: forall (n :: Nat). KnownNat n => Int
- Data.Effect.OpenUnion: keyMembership :: forall key e es. FindBy KeyResolver (KeyDiscriminator key) (KeyOf (HeadOf es)) (e # key) es => Membership (e # key) es
+ Data.Effect.OpenUnion: keyMembership :: forall {k} (key :: k) (e :: Effect) (es :: [(Type -> Type) -> Type -> Type]). FindBy KeyResolver (KeyDiscriminator key) (KeyOf (HeadOf es)) (e # key) es => Membership (e # key) es
- Data.Effect.OpenUnion: labelMembership :: forall e es. FindBy LabelResolver (LabelOf e) (LabelOf (HeadOf es)) e es => Membership e es
+ Data.Effect.OpenUnion: labelMembership :: forall (e :: Effect) (es :: [Effect]). FindBy LabelResolver (LabelOf e) (LabelOf (HeadOf es)) e es => Membership e es
- Data.Effect.OpenUnion: mapUnion :: forall es es' f a. (forall e. Membership e es -> Membership e es') -> Union es f a -> Union es' f a
+ Data.Effect.OpenUnion: mapUnion :: forall (es :: [Effect]) (es' :: [Effect]) (f :: Type -> Type) a. (forall (e :: Effect). () => Membership e es -> Membership e es') -> Union es f a -> Union es' f a
- Data.Effect.OpenUnion: membership :: forall resolver dscr e es. FindBy resolver dscr (Discriminator resolver (HeadOf es)) e es => Membership e es
+ Data.Effect.OpenUnion: membership :: forall resolver dscr (e :: Effect) (es :: [Effect]). FindBy resolver dscr (Discriminator resolver (HeadOf es)) e es => Membership e es
- Data.Effect.OpenUnion: membershipAt :: forall i es. KnownNat i => Membership (At i es) es
+ Data.Effect.OpenUnion: membershipAt :: forall (i :: Nat) (es :: [Effect]). KnownNat i => Membership (At i es) es
- Data.Effect.OpenUnion: mergeUnion :: forall es es' f a. KnownLength es => Either (Union es f a) (Union es' f a) -> Union (es ++ es') f a
+ Data.Effect.OpenUnion: mergeUnion :: forall (es :: [Effect]) (es' :: [Effect]) (f :: Type -> Type) a. KnownLength es => Either (Union es f a) (Union es' f a) -> Union (es ++ es') f a
- Data.Effect.OpenUnion: mkUnion :: Membership e es -> Ordership o e f g -> e g a -> Union es f a
+ Data.Effect.OpenUnion: mkUnion :: forall e (es :: [Effect]) (o :: EffectOrder) (f :: Type -> Type) (g :: Type -> Type) a. Membership e es -> Ordership o e f g -> e g a -> Union es f a
- Data.Effect.OpenUnion: nil :: Union '[] f a -> r
+ Data.Effect.OpenUnion: nil :: forall (f :: Type -> Type) a r. Union ('[] :: [Effect]) f a -> r
- Data.Effect.OpenUnion: nilMembership :: Membership e '[] -> r
+ Data.Effect.OpenUnion: nilMembership :: forall (e :: Effect) r. Membership e ('[] :: [Effect]) -> r
- Data.Effect.OpenUnion: pattern Here :: Membership e (e ': es)
+ Data.Effect.OpenUnion: pattern Here :: forall e (es :: [Effect]). Membership e (e ': es)
- Data.Effect.OpenUnion: prefixFor :: forall es' es e. KnownLength es' => Membership e es -> Membership e (es' ++ es)
+ Data.Effect.OpenUnion: prefixFor :: forall (es' :: [Effect]) (es :: [Effect]) (e :: Effect). KnownLength es' => Membership e es -> Membership e (es' ++ es)
- Data.Effect.OpenUnion: prefixFor1 :: forall fs x es e. KnownLength fs => Membership e es -> Membership e (Each fs x ++ es)
+ Data.Effect.OpenUnion: prefixFor1 :: forall {k} (fs :: [k -> Effect]) (x :: k) (es :: [Effect]) (e :: Effect). KnownLength fs => Membership e es -> Membership e (Each fs x ++ es)
- Data.Effect.OpenUnion: project :: Elem e order => Membership e es -> Union es f a -> Maybe (e f a)
+ Data.Effect.OpenUnion: project :: forall (es :: [Effect]) (f :: Type -> Type) a. Elem e order => Membership e es -> Union es f a -> Maybe (e f a)
- Data.Effect.OpenUnion: projectAnyOrder :: forall e es f a. HFunctor e => Membership e es -> Union es f a -> Maybe (e f a)
+ Data.Effect.OpenUnion: projectAnyOrder :: forall e (es :: [Effect]) (f :: Type -> Type) a. HFunctor e => Membership e es -> Union es f a -> Maybe (e f a)
- Data.Effect.OpenUnion: shrinkOrdership :: Ordership o e f g -> Ordership (OrderOf e) e f g
+ Data.Effect.OpenUnion: shrinkOrdership :: forall (o :: EffectOrder) (e :: Effect) (f :: Type -> Type) (g :: Type -> Type). Ordership o e f g -> Ordership (OrderOf e) e f g
- Data.Effect.OpenUnion: splitFor :: forall es es' e r. KnownLength es => (Membership e es -> r) -> (Membership e es' -> r) -> Membership e (es ++ es') -> r
+ Data.Effect.OpenUnion: splitFor :: forall (es :: [Effect]) (es' :: [Effect]) (e :: Effect) r. KnownLength es => (Membership e es -> r) -> (Membership e es' -> r) -> Membership e (es ++ es') -> r
- Data.Effect.OpenUnion: splitUnion :: forall es es' es'' f a. KnownLength es => (forall e. Membership e es -> Membership e es'') -> (forall e. Membership e es' -> Membership e es'') -> Union (es ++ es') f a -> Union es'' f a
+ Data.Effect.OpenUnion: splitUnion :: forall (es :: [Effect]) (es' :: [Effect]) (es'' :: [Effect]) (f :: Type -> Type) a. KnownLength es => (forall (e :: Effect). () => Membership e es -> Membership e es'') -> (forall (e :: Effect). () => Membership e es' -> Membership e es'') -> Union (es ++ es') f a -> Union es'' f a
- Data.Effect.OpenUnion: suffixFor :: forall es' es e. Membership e es -> Membership e (es ++ es')
+ Data.Effect.OpenUnion: suffixFor :: forall (es' :: [Effect]) (es :: [Effect]) (e :: Effect). Membership e es -> Membership e (es ++ es')
- Data.Effect.OpenUnion: type FindByLabel label e es = MemberBy LabelResolver label e es
+ Data.Effect.OpenUnion: type FindByLabel label (e :: Effect) (es :: [Effect]) = MemberBy LabelResolver label e es
- Data.Effect.OpenUnion: type Has key e es = MemberBy KeyResolver (KeyDiscriminator key) (e # key) es
+ Data.Effect.OpenUnion: type Has (key :: k) (e :: Effect) (es :: [Effect]) = MemberBy KeyResolver KeyDiscriminator key e # key es
- Data.Effect.OpenUnion: type KnownIndex i es = (KnownNat i, KnownOrder (At i es))
+ Data.Effect.OpenUnion: type KnownIndex (i :: Nat) (es :: [Effect]) = (KnownNat i, KnownOrder At i es)
- Data.Effect.OpenUnion: type KnownOrder e = Elem e (OrderOf e)
+ Data.Effect.OpenUnion: type KnownOrder (e :: Effect) = Elem e OrderOf e
- Data.Effect.OpenUnion: type MemberBy resolver dscr e es = (FindBy resolver dscr (Discriminator resolver (HeadOf es)) e es, ErrorIfNotFound resolver dscr (Discriminator resolver (HeadOf es)) e es es, KnownOrder e)
+ Data.Effect.OpenUnion: type MemberBy resolver dscr (e :: Effect) (es :: [Effect]) = (FindBy resolver dscr Discriminator resolver HeadOf es e es, ErrorIfNotFound resolver dscr Discriminator resolver HeadOf es e es es, KnownOrder e)
- Data.Effect.OpenUnion: type WeakenHOEs es = (WeakenHOEs_ es 0 (OrderOf (HeadOf es)), FOEs (RemoveHOEs es))
+ Data.Effect.OpenUnion: type WeakenHOEs (es :: [Effect]) = (WeakenHOEs_ es 0 OrderOf HeadOf es, FOEs RemoveHOEs es)
- Data.Effect.OpenUnion: type family Each (fs :: [k -> Effect]) x
+ Data.Effect.OpenUnion: type family Each (fs :: [k -> Effect]) (x :: k) :: [Effect]
- Data.Effect.OpenUnion: unbundleUnion :: forall es es' f a. KnownLength es => Union (Union es ': es') f a -> Union (es ++ es') f a
+ Data.Effect.OpenUnion: unbundleUnion :: forall (es :: [Effect]) (es' :: [(Type -> Type) -> Type -> Type]) (f :: Type -> Type) a. KnownLength es => Union (Union es ': es') f a -> Union (es ++ es') f a
- Data.Effect.OpenUnion: union :: (forall e o g. Membership e es -> Ordership o e f g -> e g a -> r) -> Union es f a -> r
+ Data.Effect.OpenUnion: union :: forall (es :: [Effect]) (f :: Type -> Type) a r. (forall (e :: Effect) (o :: EffectOrder) (g :: Type -> Type). () => Membership e es -> Ordership o e f g -> e g a -> r) -> Union es f a -> r
- Data.Effect.OpenUnion: weaken :: Union es f a -> Union (e ': es) f a
+ Data.Effect.OpenUnion: weaken :: forall (es :: [Effect]) (f :: Type -> Type) a (e :: Effect). Union es f a -> Union (e ': es) f a
- Data.Effect.OpenUnion: weakenFor :: Membership e es -> Membership e (e' ': es)
+ Data.Effect.OpenUnion: weakenFor :: forall (e :: Effect) (es :: [Effect]) (e' :: Effect). Membership e es -> Membership e (e' ': es)
- Data.Effect.OpenUnion: weakenHOEs :: forall es f a. WeakenHOEs es => Union (RemoveHOEs es) f a -> Union es f a
+ Data.Effect.OpenUnion: weakenHOEs :: forall (es :: [Effect]) (f :: Type -> Type) a. WeakenHOEs es => Union (RemoveHOEs es) f a -> Union es f a
- Data.Effect.OpenUnion: weakenHOEsFor :: forall es e. WeakenHOEs es => Membership e (RemoveHOEs es) -> Membership e es
+ Data.Effect.OpenUnion: weakenHOEsFor :: forall (es :: [Effect]) (e :: Effect). WeakenHOEs es => Membership e (RemoveHOEs es) -> Membership e es
- Data.Effect.OpenUnion: weakens :: Suffix es es' => Union es f a -> Union es' f a
+ Data.Effect.OpenUnion: weakens :: forall (es :: [Effect]) (es' :: [Effect]) (f :: Type -> Type) a. Suffix es es' => Union es f a -> Union es' f a
- Data.Effect.OpenUnion: weakensFor :: forall es es' e. Suffix es es' => Membership e es -> Membership e es'
+ Data.Effect.OpenUnion: weakensFor :: forall (es :: [Effect]) (es' :: [Effect]) (e :: Effect). Suffix es es' => Membership e es -> Membership e es'
- Data.Effect.OpenUnion: weakensUnder :: SuffixUnder es es' => Union es f a -> Union es' f a
+ Data.Effect.OpenUnion: weakensUnder :: forall (es :: [Effect]) (es' :: [Effect]) (f :: Type -> Type) a. SuffixUnder es es' => Union es f a -> Union es' f a
- Data.Effect.OpenUnion: weakensUnderFor :: forall es es' e. SuffixUnder es es' => Membership e es -> Membership e es'
+ Data.Effect.OpenUnion: weakensUnderFor :: forall (es :: [Effect]) (es' :: [Effect]) (e :: Effect). SuffixUnder es es' => Membership e es -> Membership e es'
- Data.Effect.Tag: Tag :: e f a -> Tagged tag (e :: Effect) f a
+ Data.Effect.Tag: Tag :: e f a -> Tagged (tag :: k) (e :: Effect) (f :: Type -> Type) a
- Data.Effect.Tag: [unTag] :: Tagged tag (e :: Effect) f a -> e f a
+ Data.Effect.Tag: [unTag] :: Tagged (tag :: k) (e :: Effect) (f :: Type -> Type) a -> e f a
- Data.Effect.Tag: data TaggedLabel tag (label :: Type)
+ Data.Effect.Tag: data TaggedLabel (tag :: k) label
- Data.Effect.Tag: newtype Tagged tag (e :: Effect) f a
+ Data.Effect.Tag: newtype Tagged (tag :: k) (e :: Effect) (f :: Type -> Type) a

Files

data-effects-core.cabal view
@@ -1,6 +1,6 @@ cabal-version:      3.0 name:               data-effects-core-version:            0.4.0.2+version:            0.4.1.0  -- A short (one-line) description of the package. synopsis: A basic framework for effect systems based on effects represented by GADTs.@@ -37,7 +37,7 @@ source-repository head     type: git     location: https://github.com/sayo-hs/data-effects-    tag: v0.4.0.2+    tag: v0.4.1.0     subdir: data-effects-core  library
src/Data/Effect.hs view
@@ -35,6 +35,9 @@     ) =>     FirstOrder (e :: Effect) +-- | A higher-order polynomial functor.+class PolyHFunctor (e :: Effect)+ -- * Nop Effect  -- | A effect with no operations.@@ -47,6 +50,7 @@ instance HFunctor Nop where     hfmap _ = \case {}     {-# INLINE hfmap #-}+instance PolyHFunctor Nop  -- * Embedding Effect @@ -61,6 +65,7 @@ instance HFunctor (Emb e) where     hfmap _ = coerce     {-# INLINE hfmap #-}+instance PolyHFunctor (Emb e)  newtype Unemb e a = Unemb {getUnemb :: forall f. e f a} @@ -78,6 +83,7 @@ instance HFunctor (Ask r) where     hfmap _ = coerce     {-# INLINE hfmap #-}+instance PolyHFunctor (Ask r)  -- | An effect that locally modifies the value held in the environment. data Local r :: Effect where@@ -95,6 +101,7 @@ instance HFunctor (Local r) where     hfmap phi (Local f a) = Local f (phi a)     {-# INLINE hfmap #-}+instance PolyHFunctor (Local r)  -- * State Effect @@ -112,6 +119,7 @@ instance HFunctor (State s) where     hfmap _ = coerce     {-# INLINE hfmap #-}+instance PolyHFunctor (State s)  -- * Writer Effects @@ -127,6 +135,7 @@ instance HFunctor (Tell w) where     hfmap _ = coerce     {-# INLINE hfmap #-}+instance PolyHFunctor (Tell w)  -- | An effect that performs local operations on accumulations in the context on a per-scope basis. data WriterH w :: Effect where@@ -151,6 +160,7 @@         Listen a -> Listen $ phi a         Censor f a -> Censor f (phi a)     {-# INLINE hfmap #-}+instance PolyHFunctor (WriterH w)  -- * Exception Effects @@ -166,6 +176,7 @@ instance HFunctor (Throw e) where     hfmap _ = coerce     {-# INLINE hfmap #-}+instance PolyHFunctor (Throw e)  -- | An effect to catch exceptions. data Catch e :: Effect where@@ -178,11 +189,12 @@         -> Catch e f a  data CatchLabel-type instance LabelOf (Catch w) = CatchLabel-type instance OrderOf (Catch w) = 'HigherOrder-instance HFunctor (Catch w) where+type instance LabelOf (Catch e) = CatchLabel+type instance OrderOf (Catch e) = 'HigherOrder+instance HFunctor (Catch e) where     hfmap phi (Catch a hdl) = Catch (phi a) (phi . hdl)     {-# INLINE hfmap #-}+instance PolyHFunctor (Catch e)  -- * Non-Determinism Effects @@ -198,6 +210,7 @@ instance HFunctor Empty where     hfmap _ = coerce     {-# INLINE hfmap #-}+instance PolyHFunctor Empty  -- | An effect that splits the computation into two branches. data Choose :: Effect where@@ -212,6 +225,7 @@ instance HFunctor Choose where     hfmap _ = coerce     {-# INLINE hfmap #-}+instance PolyHFunctor Choose  {- | An effect that executes two branches as scopes.@@ -228,6 +242,7 @@ instance HFunctor ChooseH where     hfmap phi (ChooseH a b) = ChooseH (phi a) (phi b)     {-# INLINE hfmap #-}+instance PolyHFunctor ChooseH  -- * Fail Effect @@ -241,6 +256,7 @@ instance HFunctor Fail where     hfmap _ = coerce     {-# INLINE hfmap #-}+instance PolyHFunctor Fail  -- * Fix Effect @@ -253,6 +269,7 @@ instance HFunctor Fix where     hfmap phi (Efix f) = Efix $ phi . f     {-# INLINE hfmap #-}+instance PolyHFunctor Fix  -- * Unlift Effect @@ -268,6 +285,8 @@     hfmap phi (WithRunInBase f) = WithRunInBase \run -> f $ run . phi     {-# INLINE hfmap #-} +-- The Unlift effect is not polynomial.+ -- * CallCC Effect (Sub/Jump-based)  data CC ref :: Effect where@@ -281,3 +300,4 @@ instance HFunctor (CC ref) where     hfmap _ = coerce     {-# INLINE hfmap #-}+instance PolyHFunctor (CC ref)
src/Data/Effect/OpenUnion.hs view
@@ -16,7 +16,7 @@ import Control.Arrow ((&&&)) import Data.Coerce (coerce) import Data.Data (Proxy (Proxy), (:~:) (Refl))-import Data.Effect (Effect, EffectOrder (FirstOrder, HigherOrder), FirstOrder, LabelOf, OrderCase, OrderOf)+import Data.Effect (Effect, EffectOrder (FirstOrder, HigherOrder), FirstOrder, LabelOf, OrderCase, OrderOf, PolyHFunctor) import Data.Effect.HFunctor (HFunctor, hfmap) import Data.Effect.Tag (type (#)) import Data.Kind (Constraint, Type)@@ -46,9 +46,17 @@         HigherOrder -> UnsafeUnion n e HigherOrder (phi . koi) {-# INLINE hfmapUnion #-} +-- | The list @es@ consists only of first-order effects. class FOEs es+ instance FOEs '[] instance (FirstOrder e, FOEs es) => FOEs (e ': es)++-- | The list @es@ consists only of polynomial effects.+class PolyHFunctors es++instance PolyHFunctors '[]+instance (PolyHFunctor e, PolyHFunctors es) => PolyHFunctors (e ': es)  coerceFOEs :: (FOEs es) => Union es f a -> Union es g a coerceFOEs = unsafeCoerce