As discussed during the previous Links meeting, the current module system is causing some issues, and rather than treating it symptomatically, we ought to design and implement a proper module system.
I envisage implementing the module system in stages, such that each stage successively increases the richness of the system, e.g.
A simple namespace
Encapsulation and abstract types
Higher-order modules (i.e. functors)
First-class modules
Separate compilation (possibly relevant for some future compiler)
In principle each stage can be implemented by a different person. I am happy to lay the foundation, that is to implement basic namespaces properly.
I think Xavier Leroy's Modular Module System provides a good starting point for an initial implementation. As we start considering more advanced features, we may want to move towards Andreas Rossberg's 1ML approach.
The initial implementation is intended to fix the following open issues: #292 #278 #225.
As discussed during the previous Links meeting, the current module system is causing some issues, and rather than treating it symptomatically, we ought to design and implement a proper module system.
I envisage implementing the module system in stages, such that each stage successively increases the richness of the system, e.g.
In principle each stage can be implemented by a different person. I am happy to lay the foundation, that is to implement basic namespaces properly.
I think Xavier Leroy's Modular Module System provides a good starting point for an initial implementation. As we start considering more advanced features, we may want to move towards Andreas Rossberg's 1ML approach.
The initial implementation is intended to fix the following open issues: #292 #278 #225.