On Sun, Sep 23, 2007 at 07:11:21PM -0700, Warren Harris wrote:I have a simple output stream class that abstracts over out_channels and buffers. I would like to add a printf method that takes a format directive, and calls the appropriate Printf function. [...] This type parameter propagates through numerous places in my code, in some cases requiring other methods to become polymorphic.Consider using the class below instead of out_stream directly: class my'out_stream och buf = object val buffer = new out_stream_of_buffer buf method buffer = buffer val outchan = new out_stream_of_channel och method outchan = outchan end Or this one, depending on how you get your buf and och: class my'out_stream'opt ?och ?buf () = object (self) val mutable buffer = None method init_buffer buf = buffer <- Some (new out_stream_of_buffer buf) initializer match buf with None -> () | Some buf -> self#init_buffer buf method buffer = match buffer with | Some o -> o | None -> failwith "MyStream.my'out_stream'opt#buf: no buffer provided" val mutable outchan = None method init_outchan och = outchan <- Some (new out_stream_of_channel och) initializer match och with None -> () | Some och -> self#init_outchan och method outchan = match outchan with | Some o -> o | None -> failwith "MyStream.my'out_stream'opt#och: no channel provided" end HTH, Julien. _______________________________________________ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs