preface

An opinionated library for function programming (à La Haskell)
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library preface.specs

Parameters

module Monad : Monad.CORE

Signature

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.

val run : 'a handler -> 'a t -> 'a Monad.t

Run the natural transformation over the Free monad.