Browse thread
[Caml-list] Legality of using module types from .mli in .ml
- Thorsten Ohl
[
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: | 2003-01-14 (21:06) |
From: | Thorsten Ohl <ohl@p...> |
Subject: | [Caml-list] Legality of using module types from .mli in .ml |
I'm often referring to module types defined in an interface file in order to reduce redundancy. For example $ cat a.mli module type T = sig val n : int end module M : T $ cat a.ml module type T = A.T module M : T = struct let n = 42 end where T can be rather long. Is this legal? The manual says in section 6.12 A compilation unit behaves roughly as the module definition module unit-name : sig unit-interface end = struct unit-implementation end and refrains from defining `roughly' :-). I came up with conflicting evidence: O'Caml accepts it $ ocamlopt a.mli a.ml However, it is not equivalent to module B : sig module type T = sig val n : int end end = struct module type T = B.T module M = struct let n = 42 end end which is obviously rejected by O'Caml, since B.T is not bound. The pair (a.mli, a.ml) more closely resembles module Aux_C = struct module type T = sig val n : int end end module type C = sig module type T = Aux_C.T module M : T end module C : C = struct module type T = Aux_C.T module M = struct let n = 42 end end without binding Aux.T. My question is now: is the pair (a.mli, a.ml) intentionally legal or do I need to expand the reference A.T, as in $ cat pedantic_a.mli module type T = sig val n : int end module M : T $ cat pedantic_a.ml module type T = sig val n : int end module M : T = struct let n = 42 end because I've have taken advantage of a bug in the compiler. The reason I'm asking this, is that my shorthand [as in (a.mli, aml)] breaks Julien Signoles' defunctorizer. Cheers, -Thorsten -- Thorsten Ohl, Physics Dept., Wuerzburg Univ. -- ohl@physik.uni-wuerzburg.de http://theorie.physik.uni-wuerzburg.de/~ohl/ [<=== PGP public key here] ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners