A semantics of multiple inheritance.
Proc. of the international symposium on Semantics of data types
Login: A logic programming language with built-in inheritance
Journal of Logic Programming
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
POPL '86 Proceedings of the 13th 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
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Type inference in a database programming language
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
ML with extended pattern matching and subtypes
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Database programming in Machiavelli—a polymorphic language with static type inference
SIGMOD '89 Proceedings of the 1989 ACM SIGMOD international conference on Management of data
Static type inference for parametric classes
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Type checking records and variants in a natural extension of ML
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Object-Oriented Functional Data Language
IEEE Transactions on Software Engineering
Toward a typed foundation for method specialization and inheritance
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A record calculus based on symmetric concatenation
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Introduction to the literature on object-oriented design, programming, and languages
ACM SIGPLAN OOPS Messenger
A compilation method for ML-style polymorphic record calculi
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Method reuse in typed object-oriented languages
SAC '93 Proceedings of the 1993 ACM/SIGAPP symposium on Applied computing: states of the art and practice
The typed polymorphic label-selective λ-calculus
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A polymorphic record calculus and its compilation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type reconstruction for coercion polymorphism
SAC '94 Proceedings of the 1994 ACM symposium on Applied computing
Orthogonal type extensions and reductions
ACM SIGPLAN Notices
An interoperable calculus for external object access
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Typed Sets as a Basis for Object-Oriented Database Schemas
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Proceedings of the 44th annual Southeast regional conference
Hi-index | 0.00 |
We give an algorithm for type inference in a language with functions, records, and variant records. A similar language was studied by Cardelli who gave a type checking algorithm. This language is interesting because it captures aspects of object-oriented programming using subtype polymorphism. We give a type system for deriving types of expressions in the language and prove the type inference algorithm is sound, i.e., it returns a type derivable from the proof system. We also prove that the type the algorithm finds is a “principal” type, i.e., one which characterizes all others. The approach taken here is due to Milner for universal polymorphism. The result is a synthesis of subtype polymorphism and universal polymorphism.