heftia-0.3.1.0: higher-order effects done right
Copyright(c) 2023-2024 Yamada Ryo
LicenseMPL-2.0 (see the file LICENSE)
Maintainerymdfield@outlook.jp
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageGHC2021

Control.Effect.Free

Description

A Freer carrier that can be used as a handler for effect systems based on data-effects.

Synopsis

Documentation

type EffectfulF u fr e = EffF u fr (U u e) Source #

A common type for representing first-order extensible effectful programs that can issue effects belonging to the specified sum of effect classes.

type EffF u fr es = ViaFreer fr (EffUnionF u es) Source #

A common type for representing first-order extensible effectful programs that can issue effects belonging to the specified list of effect classes.

newtype EffUnionF (u :: [SigClass] -> SigClass) es a Source #

A common wrapper data type for representing first-order extensible effect union.

Constructors

EffUnionF 

Fields

Instances

Instances details
Member u e es => InjectIns e (EffUnionF u es) Source # 
Instance details

Defined in Control.Effect.Free

Methods

injectIns :: e ~> EffUnionF u es Source #

toEffF :: forall es fr u c. (Freer c fr, Union u) => Eff u fr '[] es ~> EffF u fr es Source #

fromEffF :: forall es fr u c. Freer c fr => EffF u fr es ~> Eff u fr '[] es Source #

runEffF :: forall f fr u c. (Freer c fr, Union u, c f) => EffF u fr '[LiftIns f] ~> f Source #