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

Control.Effect.Interpreter.Heftia.Writer

Description

Interpreter and elaborator for the Writer effect class. See README.md.

Synopsis

Documentation

runWriterPost :: forall w a r fr u c. (Monoid w, Freer c fr, Union u, HFunctor (u '[]), Monad (Eff u fr '[] r), c (WriterT w (Eff u fr '[] r)), Member u (Tell w) (LTell w ': r), Monad (Eff u fr '[] (LTell w ': r)), c (WriterT w (Eff u fr '[] (LTell w ': r))), HFunctor (u '[WriterH w])) => Eff u fr '[WriterH w] (LTell w ': r) a -> Eff u fr '[] r (w, a) Source #

Writer effect handler with post-applying censor semantics for Monad use.

elaborateWriterPost :: forall w ef fr u c. (Monoid w, Freer c fr, Union u, Member u (Tell w) ef, HFunctor (u '[]), Monad (Eff u fr '[] ef), c (WriterT w (Eff u fr '[] ef)), HFunctor (u '[WriterH w])) => Eff u fr '[WriterH w] ef ~> Eff u fr '[] ef Source #

elabWriterPost :: forall w ef fr u c. (Monoid w, Freer c fr, Union u, Member u (Tell w) ef, HFunctor (u '[]), Monad (Eff u fr '[] ef), c (WriterT w (Eff u fr '[] ef))) => Elab (WriterH w) (Eff u fr '[] ef) Source #

postCensor :: forall w es fr u c. (Monoid w, Freer c fr, Member u (Tell w) es, Union u, HFunctor (u '[]), Monad (Eff u fr '[] es), c (WriterT w (Eff u fr '[] es))) => (w -> w) -> Eff u fr '[] es ~> Eff u fr '[] es Source #

runWriterPre :: forall w a r fr u c. (Monoid w, Freer c fr, Union u, HFunctor (u '[]), Monad (Eff u fr '[] r), c (WriterT w (Eff u fr '[] r)), Member u (Tell w) (LTell w ': r), Monad (Eff u fr '[] (LTell w ': r)), c (WriterT w (Eff u fr '[] (LTell w ': r))), HFunctor (u '[WriterH w])) => Eff u fr '[WriterH w] (LTell w ': r) a -> Eff u fr '[] r (w, a) Source #

Writer effect handler with pre-applying censor semantics for Monad use.

elaborateWriterPre :: forall w ef fr u c. (Monoid w, Freer c fr, Union u, Member u (Tell w) ef, HFunctor (u '[]), Monad (Eff u fr '[] ef), c (WriterT w (Eff u fr '[] ef)), HFunctor (u '[WriterH w])) => Eff u fr '[WriterH w] ef ~> Eff u fr '[] ef Source #

elabWriterPre :: forall w ef fr u c. (Monoid w, Freer c fr, Union u, Member u (Tell w) ef, HFunctor (u '[]), Monad (Eff u fr '[] ef), c (WriterT w (Eff u fr '[] ef))) => Elab (WriterH w) (Eff u fr '[] ef) Source #

runWriterPreA :: forall w a r fr u c. (Monoid w, Freer c fr, Union u, HFunctor (u '[]), Monad (Eff u fr '[] r), c (WriterT w (Eff u fr '[] r)), Member u (Tell w) (LTell w ': r), Monad (Eff u fr '[] (LTell w ': r)), c (WriterT w (Eff u fr '[] (LTell w ': r))), HFunctor (u '[WriterH w])) => Eff u fr '[WriterH w] (LTell w ': r) a -> Eff u fr '[] r (w, a) Source #

Writer effect handler with pre-applying censor semantics for Applicative use.

elaborateWriterPreA :: forall w ef fr u c. (Monoid w, Freer c fr, Union u, Member u (Tell w) ef, HFunctor (u '[]), Applicative (Eff u fr '[] ef), c (WriterT w (Eff u fr '[] ef)), HFunctor (u '[WriterH w])) => Eff u fr '[WriterH w] ef ~> Eff u fr '[] ef Source #

elabWriterPre' :: forall w ef fr u c. (Monoid w, Freer c fr, Union u, Member u (Tell w) ef, HFunctor (u '[]), Applicative (Eff u fr '[] ef), c (WriterT w (Eff u fr '[] ef))) => Elab (WriterH w) (Eff u fr '[] ef) Source #

preCensor :: forall w es fr u c. (Freer c fr, Member u (Tell w) es, Union u, HFunctor (u '[])) => (w -> w) -> Eff u fr '[] es ~> Eff u fr '[] es Source #

listenT :: forall w es a fr u c. (Monoid w, Freer c fr, Union u, Member u (Tell w) es, Monad (Eff u fr '[] es), c (WriterT w (Eff u fr '[] es))) => Eff u fr '[] es a -> Eff u fr '[] es (w, a) Source #

listenTA :: forall w es a fr u c. (Monoid w, Freer c fr, Union u, Member u (Tell w) es, Applicative (Eff u fr '[] es), c (WriterT w (Eff u fr '[] es))) => Eff u fr '[] es a -> Eff u fr '[] es (w, a) Source #

runTell :: (Monoid w, Freer c fr, Union u, Monad (Eff u fr '[] r), c (WriterT w (Eff u fr '[] r))) => Eff u fr '[] (LTell w ': r) a -> Eff u fr '[] r (w, a) Source #

runTellT :: (Monoid w, Freer c fr, Union u, Monad (Eff u fr '[] r), c (WriterT w (Eff u fr '[] r))) => Eff u fr '[] (LTell w ': r) ~> WriterT w (Eff u fr '[] r) Source #

runTellA :: (Monoid w, Freer c fr, Union u, Applicative (Eff u fr '[] r), c (WriterT w (Eff u fr '[] r))) => Eff u fr '[] (LTell w ': r) a -> Eff u fr '[] r (w, a) Source #

runTellTA :: (Monoid w, Freer c fr, Union u, Applicative (Eff u fr '[] r), c (WriterT w (Eff u fr '[] r))) => Eff u fr '[] (LTell w ': r) ~> WriterT w (Eff u fr '[] r) Source #

runTellK :: (Monoid w, MonadFreer c fr, Union u, c (Eff u fr '[] r)) => Eff u fr '[] (LTell w ': r) a -> Eff u fr '[] r (w, a) Source #

liftStrictWriterT :: forall w f. (Monoid w, Functor f) => f ~> WriterT w f Source #

tellStrictWriterT :: forall w f. Applicative f => w -> WriterT w f () Source #

transactWriter :: forall w es a fr u c. (Monoid w, Freer c fr, Union u, Member u (Tell w) es, Monad (Eff u fr '[] es), c (WriterT w (Eff u fr '[] es))) => Eff u fr '[] es a -> Eff u fr '[] es a Source #

confiscateT :: forall w es a fr u c. (Monoid w, Freer c fr, Union u, Member u (Tell w) es, Monad (Eff u fr '[] es), c (WriterT w (Eff u fr '[] es))) => Eff u fr '[] es a -> WriterT w (Eff u fr '[] es) a Source #