package orsetto
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha512=e260412b2dd0f98cfe3dc7ed5c31a694eb31c93cd207c51fa12675b790234ee0ad3bf07d9be17a4dc266fedfe55b14c967cad7bc0c9414063eef8afd59f3d0d1
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) tinclude 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) tUse 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) tOpen 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 = AffixDeprecated 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) tA monad that returns unit and performs no operation.
val init : 'x -> ('x, 'a) tUse init x to discard the current context and pass x into the continuation.
val cont : ('x -> 'x) -> ('x, unit) tUse cont f to apply f to the current context and pass the result into the continuation.
val eval : ('x, unit) t -> 'x -> 'xUse eval m to evaluate the continuation monad, which produces a function from an initial context to a final context.