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

Control.Monad.Trans.Hefty

Description

The data structure of hefty trees.

Synopsis

Documentation

newtype HeftyT h m a Source #

A hefty monad transformer.

Constructors

HeftyT 

Fields

Instances

Instances details
MonadTrans (HeftyT h) Source # 
Instance details

Defined in Control.Monad.Trans.Hefty

Methods

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

(Monad m, Functor (h (HeftyT h m))) => Applicative (HeftyT h m) Source # 
Instance details

Defined in Control.Monad.Trans.Hefty

Methods

pure :: a -> HeftyT h m a #

(<*>) :: HeftyT h m (a -> b) -> HeftyT h m a -> HeftyT h m b #

liftA2 :: (a -> b -> c) -> HeftyT h m a -> HeftyT h m b -> HeftyT h m c #

(*>) :: HeftyT h m a -> HeftyT h m b -> HeftyT h m b #

(<*) :: HeftyT h m a -> HeftyT h m b -> HeftyT h m a #

(Functor m, Functor (h (HeftyT h m))) => Functor (HeftyT h m) Source # 
Instance details

Defined in Control.Monad.Trans.Hefty

Methods

fmap :: (a -> b) -> HeftyT h m a -> HeftyT h m b #

(<$) :: a -> HeftyT h m b -> HeftyT h m a #

(Monad m, Functor (h (HeftyT h m))) => Monad (HeftyT h m) Source # 
Instance details

Defined in Control.Monad.Trans.Hefty

Methods

(>>=) :: HeftyT h m a -> (a -> HeftyT h m b) -> HeftyT h m b #

(>>) :: HeftyT h m a -> HeftyT h m b -> HeftyT h m b #

return :: a -> HeftyT h m a #

liftHefty :: Functor m => m a -> HeftyT h m a Source #

Lift a computation to a hefty monad.

Note that this is less constrained than MonadTrans's lift (this one only requires a Functor for underlying monad).

type Hefty h = HeftyT h Identity Source #

A hefty monad.

hefty :: FreeF (h (Hefty h)) a (Hefty h a) -> Hefty h a Source #

runHefty :: Hefty h a -> FreeF (h (Hefty h)) a (Hefty h a) Source #