Copyright | (c) 2025 Sayo contributors |
---|---|
License | MPL-2.0 (see the file LICENSE) |
Maintainer | ymdfield@outlook.jp |
Safe Haskell | Safe-Inferred |
Language | GHC2021 |
Control.Effect.Transform
Description
Documentation
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 #
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 #
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 #