-
Tutorials
-
Stack Allocation
-
Unboxed Types
-
Parallelism
-
Modes
-
Kinds
-
Uniqueness
-
Comprehensions
-
SIMD
-
Templates
-
Miscellaneous Extensions
The module strengthening
extension
What is the type of module M
in this tiny program?
module type S = sig type t end
module M : S
If you said S
then you are only partially correct: we also need to keep track
of the fact that all type declarations inside it (just t
in this example) come
from M
. So the type that the compiler infers is actually stronger:
sig type t = M.t end
We call this type “S
strengthened with M
”. It can be written out explicitly
as above and this is, in fact, the only way to write it without -extension
module_strengthening
. The new extension allows this type to be written as S
with M
.
The main motivation for this work is compiler performance improvements.