sig val run_main : (unit -> unit) -> 'a val write_wrap : ?mode:[ `Append | `Atomic | `Atomic_update | `Clobber ] -> f:(Pervasives.out_channel -> 'a) -> string -> 'a end