sig exception Closed type 'a t = { put : 'a -> unit; get : unit -> 'a; close : unit -> unit; kill : unit -> unit; } end