Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On the type structure of standard ML
ACM Transactions on Programming Languages and Systems (TOPLAS)
Embedding a second-order type system into an intersection type system
Information and Computation
Principal types and unification for simple intersection type systems
Information and Computation
What are principal typings and what are they good for?
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program fragments, linking, and modularization
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Basic simple type theory
The Definition of Standard ML
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An Extended Polymorphic Type System for Applicative Languages
MFCS '80 Proceedings of the 9th Symposium on Mathematical Foundations of Computer Science
The Essence of Principal Typings
ICALP '02 Proceedings of the 29th International Colloquium on Automata, Languages and Programming
Rank 2 intersection types for local definitions and conditional expressions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Rank 2 intersection types for modules
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
Rank 2 intersection types for modules
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
PPDP '04 Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming
Types, potency, and idempotency: why nonlinearity and amnesia make a type system work
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
We propose a rank 2 intersection type system for a language of modules built on a core ML-like language. The principal typing property of the rank 2 intersection type system for the core language plays a crucial role in the design of the type system for the module language. We first consider a "plain" notion of module, where a module is just a set of mutually recursive top-level definitions, and illustrate the notions of: module intrachecking (each module is typechecked in isolation and its interface, which is the set of typings of the defined identifiers, is inferred); interface interchecking (when linking modules, typechecking is done just by looking at the interfaces); interface specialization (interface intrachecking may require to specialize the typing listed in the interfaces); principal interfaces (the principal typing property for the type system of modules); and separate typechecking (looking at the code of the modules does not provide more type information than looking at their interfaces). Then we illustrate some limitations of the "plain" framework and extend the module language and the type system in order to overcome these limitations. The decidability of the system is shown by providing algorithms for the fundamental operations involved in module intrachecking and interface interchecking.