Clément Blaudeau
Clément Blaudeau
Its interesting also because it would disambiguate between : ```ocaml module F1 (Y : sig module type A module X : A end) = X module F2 (Y : sig...
Oups actually explicit strengthening `A with Y.X` would fix only the first case (`F1`). In the second one, the link with the argument `Y.X` should be lost.
Could it be achieved with `A with F2(Y)` ? Assuming you know the name of the functor (which is not always the case)
Overall, I think it is a nice addition to the module system, even if some of its use-cases might be partially overtaken by transparent ascription in the future. It is...
If I understand correctly, `include functor` for modules (not for signatures) is needed when the functor does not re-export its parameter. I.e, the pattern ```ocaml module F = functor (Y:S)...
It can save `T` by doing a functor call directly on the unnamed structure. To be more precise: What I had in mind was some new construct to mark functor...
Actually a key issue with the *re-export* pattern I was suggesting is that the functor can only re-export the field indicated in its parameter signature, which seems much more restricted...
The problem is still there in 5.3. It comes from a weird interaction of avoidance and type constraints. The example can be somewhat simplified to: ```ocaml module F (Y :...
Ok it turns out to be not related to avoidance, but more to the handling of type constraints ? This minimized example makes my top-level `ocaml` fail : ```ocaml type...
I think so ? A bit more investigation with @samsa1 revealed that it is probably not linked to levels, but to a side effect in the `expand_head` function in `ctype.ml`...