sig
type 'a t = { get : 'a option Join.chan Join.chan; kill : unit Join.chan; }
val empty : unit -> 'a JoinCom.P.t
val map : ('a -> 'b) -> 'a JoinCom.P.t -> 'b JoinCom.P.t
val when_none : unit Join.chan -> 'a JoinCom.P.t -> 'a JoinCom.P.t
val of_list : 'a list -> 'a JoinCom.P.t
val to_list : ('a JoinCom.P.t * 'a list Join.chan) Join.chan
val of_text : Pervasives.in_channel -> string JoinCom.P.t
val to_text :
(string JoinCom.P.t * Pervasives.out_channel * unit Join.chan) Join.chan
val to_text_close : (string JoinCom.P.t * Pervasives.out_channel) Join.chan
end