> On 2011/11/10, at 1:29, [email protected] wrote: >> Vincent Aravantinos wrote: >>> This verbosity problem is actually less true since 3.12 with the >>> introduction of "module type of": >>> >>> module A = struct >>> ... >>> end >>> >>> module Make_B (X: module type of A) = struct >>> ... >>> end >>> >>> Which is then quite close to the "include" version. >> >> Except that it defeats the whole point of functorizing, because you won't >> be >> able to plug in another module than A anymore (unless A defines no >> abstract >> types, in which case you can get away with it). > > This is actually the opposite: "module type of A" gives no equation for the > abstract types, so if module A contained an abstract type, you will be able > to change it by another abstract one. On the other hand, all concrete types > will stay there, and you will have no way to change them even if Make_B > doesn't care.
Oh, interesting. I was under the impression that A's signature gets selfified as usual, so that sig module X : module type of A end is equivalent to sig module X : SA end with module X = A (Have no Ocaml 3.12 around here, unfortunately.) Thanks for the correction! /Andreas -- Caml-list mailing list. Subscription management and archives: https://sympa-roc.inria.fr/wws/info/caml-list Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
