Module type Api.OUTPUT_MODEL

module type OUTPUT_MODEL = sig .. end
A monadic thread model (like Lwt, Async) and an output function.

type ('a, 'b, 'c) thread 
The type of the threads, the type parameters are there in case the user needs up to 3 of them.

For instance, if implement with Lwt, we will have type ('a, 'b, 'c) thread = 'a Lwt.t, but with Pvem.DEFERRED_RESULT: type ('a, 'b, 'c) thread = ('a, 'b) Deferred_result.t.

type ('a, 'b, 'c) channel 
The channel type, channels can also have up to 3 type-parameters.
val return : 'a -> ('a, 'b, 'c) thread
The monadic return.
val bind : ('a, 'b, 'c) thread ->
('a -> ('d, 'b, 'c) thread) ->
('d, 'b, 'c) thread
The monadic bind.
val output : ('a, 'b, 'c) channel ->
String.t -> (unit, 'e, 'f) thread
The function to output a given native string to a channel.