This is a commonly requested feature. One issue is that a file a.ml creates a module A. However, a file a.mli does not create a module type A. I'm not sure why this is the case. Does anyone know if there is a specific reason? On Fri, Apr 17, 2009 at 4:51 PM, Peter Hawkins wrote: > Hi... > > I have a quick question. I want to extend the List module with various > functions that I want that aren't present in the standard library, > much as the Batteries ExtList library does. > > I might write the following code in "mylibrary.ml": > module MyList = struct > include List > let foo x = ... code here > let bar y = ... code here > end > > That's ok so far, but now suppose I want to write a "mylibrary.mli" > interface file corresponding to "mylibrary.ml". Ideally I'd write > something like this in "mylibrary.mli": > module MyList : sig > include List (* unknown module type List *) > val foo : ... > val bar : ... > end > > Unfortunately I can't include "List" here since it is a structure, not > a signature. I don't think there is a way to say "include the > signature associated with List". > > I can think of three solutions: > a) Copy the complete signature of List into MyList. This is a bad idea > since the List module might change in the future. This is what the > Batteries ExtList module does. > b) Alter the List module to define a signature, say List.S, in > addition to its other contents. I can't easily do this since I didn't > write the List module. > c) Don't write a .mli file at all. > > Are there any other alternatives? > > Cheers, > Peter > > _______________________________________________ > 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 >