Freer_monad.Overmodule T : Preface_specs.Types.T1type 'a f = 'a T.tThe parametric type (which, unlike a Preface_specs.Free_monad don't need to be a Preface_specs.Functor).
type ('a, 'b) handle = ('a -> 'b) -> 'a f -> 'bThe handler type. Which is a Natural transformation from the Freer Monad to an unwrapped Identity monad.
module To_monad
(Monad : Preface_specs.Monad.CORE) :
Preface_specs.Freer_monad.TO_MONAD
with type 'a t := 'a t
and type 'a f := 'a f
and type 'a monad := 'a Monad.tA Freer monad is also an Preface_specs.Functor.
module Functor : Preface_specs.Functor.API with type 'a t = 'a tA Freer monad is also an Preface_specs.Applicative.
module Applicative : Preface_specs.Applicative.API with type 'a t = 'a tA Freer monad is also an Preface_specs.Selective.
module Selective : Preface_specs.Selective.API with type 'a t = 'a tA Freer monad is also (obviously) a Preface_specs.Monad.
module Monad : Preface_specs.Monad.API with type 'a t = 'a tinclude Preface_specs.Monad.WITH_RETURN with type 'a t := 'a tinclude Preface_specs.Monad.WITH_RETURN with type 'a t := 'a tinclude Preface_specs.Monad.WITH_RETURN with type 'a t := 'a tval return : 'a -> 'a tLift a value from 'a into a new 'a t.
Composing monadic functions using Kleisli Arrow (from right to left).
Mapping over from 'a and 'b to 'c over 'a t and 'b t to 'c t.
Mapping over from 'a and 'b and 'c to 'd over 'a t and 'b t and 'c t to 'd t.
Create a new 'a t, replacing all values in the 'b t by given a value of 'a.
module Infix : Preface_specs.Monad.INFIX with type 'a t = 'a tInfix version of OPERATION.compose_right_to_left.
Sequentially compose two actions, discarding any value produced by the first.
Sequentially compose two actions, discarding any value produced by the second.
Infix version of Preface_specs.Functor.CORE.map.
Flipped and infix version of Preface_specs.Functor.CORE.map.
Infix version of Preface_specs.Functor.OPERATION.replace.
Flipped and infix version of Preface_specs.Functor.OPERATION.replace.
module Syntax : Preface_specs.Monad.SYNTAX with type 'a t = 'a tSyntactic shortcuts for flipped version of CORE.bind:
let* x = e in f is equals to bind (fun x -> f) e.