functor (Model : OUTPUT_MODEL->   sig     val ( >>= ) :       ('a, 'b, 'c) Model.thread ->       ('-> ('d, 'b, 'c) Model.thread) -> ('d, 'b, 'c) Model.thread     val output :       ('a, 'b, 'c) Model.channel -> t -> (unit, 'd, 'e) Model.thread   end