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

Control.Effect.Interpreter.Heftia.NonDet

Description

 
Synopsis

Documentation

runNonDet :: forall f ef a fr u c. (Alternative f, MonadFreer c fr, Union u, c (Eff u fr '[] ef), c (Eff u fr '[] (LEmpty ': ef))) => Eff u fr '[] (LChoose ': (LEmpty ': ef)) a -> Eff u fr '[] ef (f a) Source #

NonDet effects handler for Monad use.

runNonDetK :: forall r ef a fr u c. (Monoid r, MonadFreer c fr, Union u, c (Eff u fr '[] ef), c (Eff u fr '[] (LEmpty ': ef)), HFunctor (u '[])) => (a -> Eff u fr '[] (LEmpty ': ef) r) -> Eff u fr '[] (LChoose ': (LEmpty ': ef)) a -> Eff u fr '[] ef r Source #

NonDet effects handler for Monad use.

runChoose :: forall f ef a fr u c. (Alternative f, MonadFreer c fr, Union u, c (Eff u fr '[] ef)) => Eff u fr '[] (LChoose ': ef) a -> Eff u fr '[] ef (f a) Source #

Choose effect handler for Monad use.

runChooseK :: forall r ef a fr u c. (Semigroup r, MonadFreer c fr, Union u, c (Eff u fr '[] ef)) => (a -> Eff u fr '[] ef r) -> Eff u fr '[] (LChoose ': ef) a -> Eff u fr '[] ef r Source #

Choose effect handler for Monad use.

runEmpty :: forall a r fr u c. (Freer c fr, Union u, Applicative (Eff u fr '[] r), c (MaybeT (Eff u fr '[] r))) => Eff u fr '[] (LEmpty ': r) a -> Eff u fr '[] r (Maybe a) Source #

Empty effect handler for Monad use.

runChooseH :: (Freer c fr, HFunctorUnion u, Member u Choose ef, ForallHFunctor u eh, Monad (Eff u fr eh ef)) => Eff u fr (ChooseH ': eh) ef ~> Eff u fr eh ef Source #

ChooseH effect handler for Monad use.

Convert a higher-order effect of the form

chooseH :: m a -> m a -> m a

into a first-order effect of the form:

choose :: m Bool

runNonDetA :: forall f ef a fr u c. (Alternative f, Freer c fr, Union u, Applicative (Eff u fr '[] ef), c (Compose (Eff u fr '[] ef) f)) => Eff u fr '[ChooseH] (LEmpty ': ef) a -> Eff u fr '[] ef (f a) Source #

NonDet effect handler for Applicative use.

runEmptyA :: forall f a r fr u c. (Alternative f, Freer c fr, Union u, Applicative (Eff u fr '[] r), c (Compose (Eff u fr '[] r) f)) => Eff u fr '[] (LEmpty ': r) a -> Eff u fr '[] r (f a) Source #

Empty effect handler for Applicative use.