Manifest types, modules, and separate compilation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type-theoretic approach to higher-order modules with sharing
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Applicative functors and fully transparent higher-order modules
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Higher-order functors with transparent signatures
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Transparent modules with fully syntatic signatures
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Abstract types have existential types
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Using dependent types to express modular structure
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Definition of Standard ML
Composable and compilable macros:: you want it when?
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A formal specification of the Haskell 98 module system
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
A type system for higher-order modules
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Semantics for Higher-Order Functors
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
STOC '76 Proceedings of the eighth annual ACM symposium on Theory of computing
Journal of Functional Programming
A type system for recursive modules
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Mixin' up the ML module system
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Modeling abstract types in modules with open existential types
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ML Module Mania: A Type-Safe, Separately Compiled, Extensible Interpreter
Electronic Notes in Theoretical Computer Science (ENTCS)
A true higher-order module system
A true higher-order module system
Hi-index | 0.00 |
SML/NJ and other Standard ML variants extend the ML module system with higher-order functors, elevating the module language to a full functional language. In this paper, we describe the implementation of higher-order modules in SML/NJ, which is unique in providing "true" higher-order static behavior. This implementation is based on three key ideas: unique internal variables (entity variables) for naming static entities, factorization of the static information in both basic modules and functors into signatures and realizations, and representing the static "effects" and type-level mapping performed by a functor using a static lambda calculus (the entity calculus). This design conforms to MacQueen-Tofte's re-elaboration semantics without having to re-elaborate functor bodies at functor applications.