data-effects-core-0.4.0.2: A basic framework for effect systems based on effects represented by GADTs.
Copyright(c) 2025 Sayo contributors
LicenseMPL-2.0 (see the file LICENSE)
Maintainerymdfield@outlook.jp
Safe HaskellSafe-Inferred
LanguageGHC2021

Control.Effect.Transform

Description

 

Documentation

raise :: forall e es a ff c. Free c ff => Eff ff es a -> Eff ff (e ': es) a Source #

raises :: forall es es' a ff c. (Suffix es es', Free c ff) => Eff ff es a -> Eff ff es' a Source #

raiseUnder :: forall e0 e1 es a ff c. Free c ff => Eff ff (e0 ': es) a -> Eff ff (e0 ': (e1 ': es)) a Source #

raisesUnder :: forall e es es' a ff c. (Suffix es es', Free c ff) => Eff ff (e ': es) a -> Eff ff (e ': es') a Source #

raisesUnders :: forall es es' a ff c. (SuffixUnder es es', Free c ff) => Eff ff es a -> Eff ff es' a Source #

onlyFOEs :: forall es a ff c. (Free c ff, WeakenHOEs es) => Eff ff (RemoveHOEs es) a -> Eff ff es a Source #

raisePrefix :: forall es' es a ff c. (KnownLength es', Free c ff) => Eff ff es a -> Eff ff (es' ++ es) a Source #

raiseSuffix :: forall es' es a ff c. Free c ff => Eff ff es a -> Eff ff (es ++ es') a Source #

raisePrefix1 :: forall fs x es a ff c. (KnownLength fs, Free c ff) => Eff ff es a -> Eff ff (Each fs x ++ es) a Source #

subsume :: forall e es a ff c. (e `In` es, Free c ff) => Eff ff (e ': es) a -> Eff ff es a Source #

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 Source #

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 Source #

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 Source #

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 Source #

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 Source #

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 Source #

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 Source #

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 Source #

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 Source #

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 Source #

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 Source #

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 Source #

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 Source #