heftia-0.7.0.0: higher-order algebraic effects done right
Copyright(c) 2024 Sayo contributors
LicenseMPL-2.0 (see the LICENSE file)
Maintainerymdfield@outlook.jp
Safe HaskellNone
LanguageGHC2021

Control.Monad.Hefty.Types

Description

This module defines the Eff monad and related fundamental types and functions. Please refer to the documentation of the top-level module.

Synopsis

Documentation

data Freer (f :: Type -> Type) a Source #

Constructors

Val a

A pure value.

Op

An effectful operation.

Fields

  • (f x)
     
  • (FTCQueue (Freer f) x a)

    the continuation of the operation.

Instances

Instances details
Free Monad Freer Source # 
Instance details

Defined in Control.Monad.Hefty.Types

Methods

liftFree :: f a -> Freer f a #

runFree :: Monad g => (forall x. f x -> g x) -> Freer f a -> g a #

retract :: Monad f => Freer f a -> f a #

hoist :: (forall x. f x -> g x) -> Freer f a -> Freer g a #

Applicative (Freer f) Source # 
Instance details

Defined in Control.Monad.Hefty.Types

Methods

pure :: a -> Freer f a #

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

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

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

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

Functor (Freer f) Source # 
Instance details

Defined in Control.Monad.Hefty.Types

Methods

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

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

Monad (Freer f) Source # 
Instance details

Defined in Control.Monad.Hefty.Types

Methods

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

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

return :: a -> Freer f a #

type AlgHandler (e :: Effect) (m :: Type -> Type) (n :: Type -> Type) ans = forall x. e m x -> (x -> n ans) -> n ans Source #

qApp :: forall (f :: Type -> Type) a b. FTCQueue (Freer f) a b -> a -> Freer f b Source #

Applies a value to a Kleisli arrow in FTCQueue representation.