package preface
Module Freer_monad.Over
Parameters
module T : Preface_specs.Types.T1Signature
type 'a f = 'a T.tThe parametric type (which, unlike a Preface_specs.Free_monad don't need to be a Preface_specs.Functor).
The handler type. Which is a Natural transformation from the Freer Monad to an unwrapped Identity monad.
Functor API
A Freer monad is also an Preface_specs.Functor.
module Functor : Preface_specs.Functor.API with type 'a t = 'a tApplicative API
A Freer monad is also an Preface_specs.Applicative.
module Applicative : Preface_specs.Applicative.API with type 'a t = 'a tMonad API
A Freer monad is also (obviously) a Preface_specs.Monad.
module Monad : Preface_specs.Monad.API with type 'a t = 'a tType
Functions
join remove one level of monadic structure, projecting its bound argument into the outer level.
val return : 'a -> 'a tCreate a new 'a t.
Composing monadic functions using Kleisli Arrow (from left to right).
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.
Infix operators
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.
Syntax
module Syntax : Preface_specs.Monad.SYNTAX with type 'a t := 'a tSyntaxic shortcuts for flipped version of CORE.bind:
let* x = e in f is equals to bind (fun x -> f) e.