Browse thread
[Caml-list] multiple includes in module types with shared types
- David Monniaux
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | David Monniaux <David.Monniaux@e...> |
| Subject: | [Caml-list] multiple includes in module types with shared types |
Hi, It seems quite logical to have constructs such as: module type ORDERED_TYPE = sig type t val compare: t->t->int end module type PRINTABLE_TYPE = sig type t val print: Format.formatter->t->unit end Now we want to define such things as module type ORDERED_PRINTABLE_TYPE = sig include ORDERED_TYPE include PRINTABLE_TYPE end but this is refused since it defines "t" twice. module type ORDERED_PRINTABLE_TYPE = sig include ORDERED_TYPE include PRINTABLE_TYPE with type t = t end is also refused. Is there a workaround, short of manually including one of the modules without the type t? Alain Frisch suggested module type ORDERED_TYPE = sig type t val compare: t->t->int end;; module type PRINTABLE_TYPE = sig type s val print: Format.formatter->s->unit end;; module type ORDERED_PRINTABLE_TYPE = sig include ORDERED_TYPE include PRINTABLE_TYPE with type s = t end but this is very inelegant and has issues of its own. David Monniaux http://www.di.ens.fr/~monniaux Laboratoire d'informatique de l'École Normale Supérieure, Paris, France ------------------- Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr