sig   type ('a, 'b, 'c) thread   type ('a, 'b, 'c) channel   val return : '-> ('a, 'b, 'c) Sosa.OUTPUT_MODEL.thread   val bind :     ('a, 'b, 'c) Sosa.OUTPUT_MODEL.thread ->     ('-> ('d, 'b, 'c) Sosa.OUTPUT_MODEL.thread) ->     ('d, 'b, 'c) Sosa.OUTPUT_MODEL.thread   val output :     ('a, 'b, 'c) Sosa.OUTPUT_MODEL.channel ->     String.t -> (unit, 'e, 'f) Sosa.OUTPUT_MODEL.thread end