caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Extending modules and signatures
@ 2009-04-17 20:51 Peter Hawkins
  2009-04-17 21:36 ` [Caml-list] " Goswin von Brederlow
  2009-04-18  5:47 ` Ashish Agarwal
  0 siblings, 2 replies; 11+ messages in thread
From: Peter Hawkins @ 2009-04-17 20:51 UTC (permalink / raw)
  To: caml-list

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


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2009-04-21 16:01 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-17 20:51 Extending modules and signatures Peter Hawkins
2009-04-17 21:36 ` [Caml-list] " Goswin von Brederlow
2009-04-18  5:47 ` Ashish Agarwal
2009-04-18 14:20   ` Martin Jambon
2009-04-19 21:36     ` Ashish Agarwal
2009-04-19 21:53       ` Jon Harrop
2009-04-20  5:17         ` Goswin von Brederlow
2009-04-20  0:06       ` Martin Jambon
2009-04-20  5:23         ` Goswin von Brederlow
2009-04-20 11:55           ` Martin Jambon
2009-04-21 16:01         ` Ashish Agarwal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).