Type inference in a database programming language
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Type inference for record concatenatiOn and multiple inheritance
Proceedings of the Fourth Annual Symposium on Logic in computer science
A record calculus based on symmetric concatenation
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type inference for record concatenation and multiple inheritance
Information and Computation
Typing record concatenation for free
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typing record concatenation for free
Theoretical aspects of object-oriented programming
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Units: cool modules for HOT languages
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Efficiency of a Good But Not Linear Set Union Algorithm
Journal of the ACM (JACM)
Mixin Modules in a Call-by-Value Setting
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
A Primitive Calculus for Module Systems
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
The Essence of Principal Typings
ICALP '02 Proceedings of the 29th International Colloquium on Automata, Languages and Programming
A versatile constraint-based type inference system
Nordic Journal of Computing
A Constraint-Based Presentation and Generalization of Rows
LICS '03 Proceedings of the 18th Annual IEEE Symposium on Logic in Computer Science
Journal of Functional Programming
Type inference for record concatenation and subtyping
Information and Computation
On the complexity of deciding typability in the relational algebra
Acta Informatica
Mixin modules and computational effects
ICALP'03 Proceedings of the 30th international conference on Automata, languages and programming
From structures and functors to modules and units
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
A Calculus of Components with Dynamic Type-Checking
Electronic Notes in Theoretical Computer Science (ENTCS)
A calculus of open modules: call-by-need strategy and confluence
Mathematical Structures in Computer Science
A framework for type safe exchange of mobile code
TGC'06 Proceedings of the 2nd international conference on Trustworthy global computing
Hi-index | 0.00 |
A mixin module is a programming abstraction that simultaneously generalizes λ-abstractions, records, and mutually recursive definitions. Although various mixin module type systems have been developed, no one has investigated principal typings or developed type inference for first-class mixin modules, nor has anyone added Milner's let-polymorphism to such a system.This paper proves that typability is NP-complete for the naive approach followed by previous mixin module type systems. Because a λ-calculus extended with record concatenation is a simple restriction of our mixin module calculus, we also prove the folk belief that typability is NP-complete for the naive early type systems for record concatenation.To allow feasible type inference, we present Martini, a new system of simple types for mixin modules with principal typings. Martini is conceptually simple, with no subtyping and a clean and balanced separation between unification-based type inference with type and row variables and constraint solving for safety of linking and field extraction. We have implemented a type inference algorithm and we prove its complexity to be O(n2), or O(n) given a fixed bound on the number of field labels. To prove the complexity, we need to present an algorithm for row unification that may have been implemented by others, but which we could not find written down anywhere. Because Martini has principal typings, we successfully extend it with Milner's let-polymorphism.