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.Monad.Freer.Church

Description

A Church-encoded Freer monad.

Synopsis

Documentation

newtype FreerChurch f a Source #

A Church encoded Freer monad.

Constructors

FreerChurch 

Fields

Instances

Instances details
Freer Monad FreerChurch Source # 
Instance details

Defined in Control.Monad.Freer.Church

Methods

liftIns :: e a -> FreerChurch e a Source #

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

retractFreer :: Monad m => FreerChurch m a -> m a Source #

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

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

MonadFreer Monad FreerChurch Source # 
Instance details

Defined in Control.Monad.Freer.Church

Methods

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

Foldable f => Foldable (FreerChurch f) Source # 
Instance details

Defined in Control.Monad.Freer.Church

Methods

fold :: Monoid m => FreerChurch f m -> m #

foldMap :: Monoid m => (a -> m) -> FreerChurch f a -> m #

foldMap' :: Monoid m => (a -> m) -> FreerChurch f a -> m #

foldr :: (a -> b -> b) -> b -> FreerChurch f a -> b #

foldr' :: (a -> b -> b) -> b -> FreerChurch f a -> b #

foldl :: (b -> a -> b) -> b -> FreerChurch f a -> b #

foldl' :: (b -> a -> b) -> b -> FreerChurch f a -> b #

foldr1 :: (a -> a -> a) -> FreerChurch f a -> a #

foldl1 :: (a -> a -> a) -> FreerChurch f a -> a #

toList :: FreerChurch f a -> [a] #

null :: FreerChurch f a -> Bool #

length :: FreerChurch f a -> Int #

elem :: Eq a => a -> FreerChurch f a -> Bool #

maximum :: Ord a => FreerChurch f a -> a #

minimum :: Ord a => FreerChurch f a -> a #

sum :: Num a => FreerChurch f a -> a #

product :: Num a => FreerChurch f a -> a #

Traversable f => Traversable (FreerChurch f) Source # 
Instance details

Defined in Control.Monad.Freer.Church

Methods

traverse :: Applicative f0 => (a -> f0 b) -> FreerChurch f a -> f0 (FreerChurch f b) #

sequenceA :: Applicative f0 => FreerChurch f (f0 a) -> f0 (FreerChurch f a) #

mapM :: Monad m => (a -> m b) -> FreerChurch f a -> m (FreerChurch f b) #

sequence :: Monad m => FreerChurch f (m a) -> m (FreerChurch f a) #

Applicative (FreerChurch f) Source # 
Instance details

Defined in Control.Monad.Freer.Church

Methods

pure :: a -> FreerChurch f a #

(<*>) :: FreerChurch f (a -> b) -> FreerChurch f a -> FreerChurch f b #

liftA2 :: (a -> b -> c) -> FreerChurch f a -> FreerChurch f b -> FreerChurch f c #

(*>) :: FreerChurch f a -> FreerChurch f b -> FreerChurch f b #

(<*) :: FreerChurch f a -> FreerChurch f b -> FreerChurch f a #

Functor (FreerChurch f) Source # 
Instance details

Defined in Control.Monad.Freer.Church

Methods

fmap :: (a -> b) -> FreerChurch f a -> FreerChurch f b #

(<$) :: a -> FreerChurch f b -> FreerChurch f a #

Monad (FreerChurch f) Source # 
Instance details

Defined in Control.Monad.Freer.Church

Methods

(>>=) :: FreerChurch f a -> (a -> FreerChurch f b) -> FreerChurch f b #

(>>) :: FreerChurch f a -> FreerChurch f b -> FreerChurch f b #

return :: a -> FreerChurch f a #

(Functor f, Eq1 f, Eq a) => Eq (FreerChurch f a) Source # 
Instance details

Defined in Control.Monad.Freer.Church

Methods

(==) :: FreerChurch f a -> FreerChurch f a -> Bool #

(/=) :: FreerChurch f a -> FreerChurch f a -> Bool #

(Functor f, Ord1 f, Ord a) => Ord (FreerChurch f a) Source # 
Instance details

Defined in Control.Monad.Freer.Church

Methods

compare :: FreerChurch f a -> FreerChurch f a -> Ordering #

(<) :: FreerChurch f a -> FreerChurch f a -> Bool #

(<=) :: FreerChurch f a -> FreerChurch f a -> Bool #

(>) :: FreerChurch f a -> FreerChurch f a -> Bool #

(>=) :: FreerChurch f a -> FreerChurch f a -> Bool #

max :: FreerChurch f a -> FreerChurch f a -> FreerChurch f a #

min :: FreerChurch f a -> FreerChurch f a -> FreerChurch f a #

liftInsChurch :: ins a -> FreerChurch ins a Source #

interpretChurch :: Monad m => (ins ~> m) -> FreerChurch ins a -> m a Source #