Module Yocaml.Runtime

Describes a dedicated runtime for varying the execution context of YOCaml.

Although much of YOCaml is already abstracted by means of a rudimentary effect handler (based on a Freer Monad), it is assumed that the management of the control flow does not have to be handled by an end user or someone concerned with building a dedicated runtime (for Windows for example). So it is sufficient to provide a module that implements the necessary primitives that will be invoked in the effect manager.

One might ask why not just use modules as an effect abstraction. Mainly because a Freer Monad is also a (logical) monad, so you can easily traverse them which makes the implementation of the engine much simpler.

Runtime definition

The signature describes the set of primitives to be implemented to build an additional runtime.

module type RUNTIME = sig ... end

Helpers

module Make (R : RUNTIME) : sig ... end