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.Interpret

Description

 

Documentation

runEff :: (Free c ff, c f) => Eff ff '[Emb f] a -> f a Source #

runPure :: (Free c ff, c Identity) => Eff ff '[] a -> a Source #

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

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

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

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

interpose :: forall e es ff a c. (e :> es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a Source #

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

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

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

preinterpose :: forall e es ff a c. (e :> es, Free c ff) => (e ~~> Eff ff es) -> Eff ff es a -> Eff ff es a Source #

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

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

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

interpretAll :: forall es es' ff a c. Free c ff => (Union es ~~> Eff ff es') -> Eff ff es a -> Eff ff es' a Source #

iterAllEff :: forall es f ff a c. (Free c ff, c f) => (Union es ~~> f) -> Eff ff es a -> f a Source #