heftia-0.1.0.0: Higher-order version of Freer.
Copyright(c) 2023 Yamada Ryo
LicenseMPL-2.0 (see the file LICENSE)
Maintainerymdfield@outlook.jp
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageGHC2021

Control.Monad.Trans.Heftia.Church

Description

A Church-encoded Heftia transformer.

Synopsis

Documentation

newtype HeftiaChurchT h f a Source #

A Church-encoded Heftia transformer.

Constructors

HeftiaChurchT 

Fields

Instances

Instances details
TransHeftia Monad (HeftiaChurchT :: ((Type -> TYPE LiftedRep) -> Type -> Type) -> (Type -> Type) -> Type -> TYPE LiftedRep) Source # 
Instance details

Defined in Control.Monad.Trans.Heftia.Church

Methods

liftSigT :: forall sig (f :: Type -> Type) a. HFunctor sig => sig (HeftiaChurchT sig f) a -> HeftiaChurchT sig f a Source #

transformHT :: forall (f :: Type -> Type) (sig :: (Type -> Type) -> Type -> Type) (sig' :: (Type -> Type) -> Type -> Type). (Monad f, HFunctor sig, HFunctor sig') => (forall (g :: Type -> Type). sig g ~> sig' g) -> HeftiaChurchT sig f ~> HeftiaChurchT sig' f Source #

translateT :: forall (f :: Type -> Type) (sig :: (Type -> Type) -> Type -> Type) (sig' :: (Type -> Type) -> Type -> Type). (Monad f, HFunctor sig, HFunctor sig') => (sig (HeftiaChurchT sig' f) ~> sig' (HeftiaChurchT sig' f)) -> HeftiaChurchT sig f ~> HeftiaChurchT sig' f Source #

liftLowerHT :: forall (sig :: (Type -> Type) -> Type -> Type) (f :: Type -> Type). (Monad f, HFunctor sig) => f ~> HeftiaChurchT sig f Source #

hoistHeftia :: forall (f :: Type -> Type) (g :: Type -> Type) (sig :: (Type -> Type) -> Type -> Type). (Monad f, Monad g, HFunctor sig) => (f ~> g) -> HeftiaChurchT sig f ~> HeftiaChurchT sig g Source #

interpretLowerHT :: forall (sig :: (Type -> Type) -> Type -> Type) (f :: Type -> Type) (g :: Type -> Type). (HFunctor sig, Monad f, Monad g) => (f ~> HeftiaChurchT sig g) -> HeftiaChurchT sig f ~> HeftiaChurchT sig g Source #

runElaborateH :: forall (f :: Type -> Type) (sig :: (Type -> Type) -> Type -> Type). (Monad f, HFunctor sig) => (sig f ~> f) -> HeftiaChurchT sig f ~> f Source #

elaborateHT :: forall (f :: Type -> Type) (g :: Type -> Type) (sig :: (Type -> Type) -> Type -> Type). (Monad f, Monad g, HFunctor sig) => (f ~> g) -> (sig g ~> g) -> HeftiaChurchT sig f ~> g Source #

reelaborateHT :: forall (f :: Type -> Type) (sig :: (Type -> Type) -> Type -> Type). (Monad f, HFunctor sig) => (sig (HeftiaChurchT sig f) ~> HeftiaChurchT sig f) -> HeftiaChurchT sig f ~> HeftiaChurchT sig f Source #

MonadTransHeftia (HeftiaChurchT :: ((Type -> TYPE LiftedRep) -> Type -> Type) -> (Type -> Type) -> Type -> TYPE LiftedRep) Source # 
Instance details

Defined in Control.Monad.Trans.Heftia.Church

Methods

elaborateMK :: forall (m :: Type -> Type) (sig :: (Type -> Type) -> Type -> Type) r. (Monad m, HFunctor sig) => (sig (ContT r m) ~> ContT r m) -> HeftiaChurchT sig m ~> ContT r m Source #

reelaborateMK :: forall (m :: Type -> Type) (sig :: (Type -> Type) -> Type -> Type) r. (Monad m, HFunctor sig) => (sig (ContT r (HeftiaChurchT sig m)) ~> ContT r (HeftiaChurchT sig m)) -> HeftiaChurchT sig m ~> ContT r (HeftiaChurchT sig m) Source #

elaborateMT :: forall (m :: Type -> Type) (t :: (Type -> Type) -> Type -> Type) (sig :: (Type -> Type) -> Type -> Type). (Monad m, MonadTrans t, Monad (t m), HFunctor sig) => (sig (t m) ~> t m) -> HeftiaChurchT sig m ~> t m Source #

reelaborateMT :: forall (m :: Type -> Type) (t :: (Type -> Type) -> Type -> Type) (n :: Type -> Type) (sig :: (Type -> Type) -> Type -> Type). (Monad m, MonadTrans t, Coercible n (HeftiaChurchT sig m), Monad (t n), Monad n, HFunctor sig) => (sig (t n) ~> t n) -> HeftiaChurchT sig m ~> t n Source #

MonadTrans (HeftiaChurchT h :: (Type -> Type) -> Type -> TYPE LiftedRep) Source # 
Instance details

Defined in Control.Monad.Trans.Heftia.Church

Methods

lift :: Monad m => m a -> HeftiaChurchT h m a #

Applicative (HeftiaChurchT h f) Source # 
Instance details

Defined in Control.Monad.Trans.Heftia.Church

Methods

pure :: a -> HeftiaChurchT h f a #

(<*>) :: HeftiaChurchT h f (a -> b) -> HeftiaChurchT h f a -> HeftiaChurchT h f b #

liftA2 :: (a -> b -> c) -> HeftiaChurchT h f a -> HeftiaChurchT h f b -> HeftiaChurchT h f c #

(*>) :: HeftiaChurchT h f a -> HeftiaChurchT h f b -> HeftiaChurchT h f b #

(<*) :: HeftiaChurchT h f a -> HeftiaChurchT h f b -> HeftiaChurchT h f a #

Functor (HeftiaChurchT h f) Source # 
Instance details

Defined in Control.Monad.Trans.Heftia.Church

Methods

fmap :: (a -> b) -> HeftiaChurchT h f a -> HeftiaChurchT h f b #

(<$) :: a -> HeftiaChurchT h f b -> HeftiaChurchT h f a #

Monad (HeftiaChurchT h f) Source # 
Instance details

Defined in Control.Monad.Trans.Heftia.Church

Methods

(>>=) :: HeftiaChurchT h f a -> (a -> HeftiaChurchT h f b) -> HeftiaChurchT h f b #

(>>) :: HeftiaChurchT h f a -> HeftiaChurchT h f b -> HeftiaChurchT h f b #

return :: a -> HeftiaChurchT h f a #

runHeftiaChurchT :: (h (HeftiaChurchT h f) ~> ContT r f) -> HeftiaChurchT h f b -> ContT r f b Source #