Module type Sosa.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 of the channels, channels can have up to 3 type-parameters too.
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.