heftia-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.Freer.Final

Description

A final-encoded generic Freer carrier.

Synopsis

Documentation

newtype FreerFinal c f a Source #

A final-encoded generic Freer carrier.

Constructors

FreerFinal 

Fields

Instances

Instances details
(forall (e :: Type -> Type). c (FreerFinal c e)) => Freer c (FreerFinal c) Source # 
Instance details

Defined in Control.Freer.Final

Methods

liftIns :: e a -> FreerFinal c e a Source #

interpretFreer :: forall m (e :: Type -> Type) a. c m => (e ~> m) -> FreerFinal c e a -> m a Source #

retractFreer :: c m => FreerFinal c m a -> m a Source #

transformFreer :: forall (e :: Type -> Type) (e' :: Type -> Type) a. (e ~> e') -> FreerFinal c e a -> FreerFinal c e' a Source #

reinterpretFreer :: forall (e :: Type -> Type) a. (e ~> FreerFinal c e) -> FreerFinal c e a -> FreerFinal c e a Source #

MonadFreer Monad (FreerFinal Monad) Source # 
Instance details

Defined in Control.Freer.Final

Methods

interpretFreerK :: forall (e :: Type -> Type) r. (e ~> Cont r) -> FreerFinal Monad e ~> Cont r Source #

(forall (f :: Type -> Type). c f => Alternative f, Applicative (FreerFinal c e)) => Alternative (FreerFinal c e) Source # 
Instance details

Defined in Control.Freer.Final

Methods

empty :: FreerFinal c e a #

(<|>) :: FreerFinal c e a -> FreerFinal c e a -> FreerFinal c e a #

some :: FreerFinal c e a -> FreerFinal c e [a] #

many :: FreerFinal c e a -> FreerFinal c e [a] #

(forall (f :: Type -> Type). c f => Applicative f, Functor (FreerFinal c e)) => Applicative (FreerFinal c e) Source # 
Instance details

Defined in Control.Freer.Final

Methods

pure :: a -> FreerFinal c e a #

(<*>) :: FreerFinal c e (a -> b) -> FreerFinal c e a -> FreerFinal c e b #

liftA2 :: (a -> b -> c0) -> FreerFinal c e a -> FreerFinal c e b -> FreerFinal c e c0 #

(*>) :: FreerFinal c e a -> FreerFinal c e b -> FreerFinal c e b #

(<*) :: FreerFinal c e a -> FreerFinal c e b -> FreerFinal c e a #

(forall (f :: Type -> Type). c f => Functor f) => Functor (FreerFinal c e) Source # 
Instance details

Defined in Control.Freer.Final

Methods

fmap :: (a -> b) -> FreerFinal c e a -> FreerFinal c e b #

(<$) :: a -> FreerFinal c e b -> FreerFinal c e a #

(forall (m :: Type -> Type). c m => Monad m, Applicative (FreerFinal c f)) => Monad (FreerFinal c f) Source # 
Instance details

Defined in Control.Freer.Final

Methods

(>>=) :: FreerFinal c f a -> (a -> FreerFinal c f b) -> FreerFinal c f b #

(>>) :: FreerFinal c f a -> FreerFinal c f b -> FreerFinal c f b #

return :: a -> FreerFinal c f a #

(forall (m :: Type -> Type). c m => MonadPlus m, Alternative (FreerFinal c f), Monad (FreerFinal c f)) => MonadPlus (FreerFinal c f) Source # 
Instance details

Defined in Control.Freer.Final

Methods

mzero :: FreerFinal c f a #

mplus :: FreerFinal c f a -> FreerFinal c f a -> FreerFinal c f a #

interpretFreerFinal :: c f => (e ~> f) -> FreerFinal c e a -> f a Source #

liftInsFinal :: ins a -> FreerFinal c ins a Source #