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 #