package orsetto
Install
Dune Dependency
Authors
Maintainers
Sources
sha512=9b654edb663ae697563f150824047052f3b1bf760398f24bce6350553f031f73c46b6337239a1acd871e61238597ea92046809e3358290ff14d6ba671b449085
doc/orsetto.cf/Cf_cmonad/index.html
Module Cf_cmonad
The continuation monad and its operators.
Overview
A continuation monad represents a computation composed of stages that can be interrupted, resumed and rescheduled. Because Objective Caml is an eager language programming in the continuation-passing style (CPS) can be simplified by the use of the continuation monad and its operators.
Types
The continuation monad: a function for passing intermediate results from continuation context to continuation context.
module Basis : Cf_monad.Binary.Basis with type ('x, 'a) t := ('x, 'a) t
include Cf_monad.Binary.Profile with type ('x, 'a) t := ('x, 'a) t
Module inclusions from Cf_monad_core
and Cf_seqmonad
.
include Cf_monad.Core.Binary.Profile with type ('m, 'r) t := ('m, 'r) t
val return : 'r -> ('m, 'r) t
Use return a
to apply the binding to a
.
Use bind m f
to bind f
to the value returned by m
.
Use map m ~f
to return the result of applying f
to the value returned by m
.
Use product a b
to return the monoidal product of a
and b
.
module Affix : Cf_monad_core.Binary.Affix with type ('m, 'r) t := ('m, 'r) t
Open Affix
to include the affix monad operators.
Use disregard m
to ignore the value returned by m
and apply the unit value to the bound function.
module Infix = Affix
Deprecated module alias.
include Cf_seqmonad.Functor.Binary with type ('m, 'r) t := ('m, 'r) t
Use collect s
to bind in sequence every monad value in the finite sequence s
and collect all the returned values. Returns (n, s)
where n
is the number of values collected and s
is the list of values in reverse order, i.e. from last collected to first collected. Never returns and exhausts all memory if s
never terminates.
val nil : ('x, unit) t
A monad that returns unit
and performs no operation.
val init : 'x -> ('x, 'a) t
Use init x
to discard the current context and pass x
into the continuation.
val cont : ('x -> 'x) -> ('x, unit) t
Use cont f
to apply f
to the current context and pass the result into the continuation.
val eval : ('x, unit) t -> 'x -> 'x
Use eval m
to evaluate the continuation monad, which produces a function from an initial context to a final context.