> 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

Reply via email to