Over.To_monad
module Monad : Preface_specs.Monad.CORE
type ('a, 'b) handle = ('a -> 'b Monad.t) -> 'a f -> 'b Monad.t
type 'a handler = {
handler : 'b. ('b, 'a) handle;
}
The handler type. Which is a Natural transformation from the Freer Monad to the given Monad.
Natural transformation
Freer Monad
Monad
val run : 'a handler -> 'a t -> 'a Monad.t
Run the natural transformation over the Free monad.
Free monad