On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Types and persistence in database programming languages
ACM Computing Surveys (CSUR)
A semantics of multiple inheritance
Information and Computation - Semantics of Data Types
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
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An object addressing mechanism for statically typed languages with multiple inheritance
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
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
Complete sets of transformations for general E-unification
Theoretical Computer Science - Second Conference on Rewriting Techniques and Applications, Bordeaux, May 1987
The definition of Standard ML
Type inference for record concatenatiOn and multiple inheritance
Proceedings of the Fourth Annual Symposium on Logic in computer science
Can object-oriented databases be statically typed?
Proceedings of the second international workshop on Database programming languages
A simple semantics for ML polymorphism
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
A record calculus based on symmetric concatenation
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the fifth international conference on Mathematical foundations of programming semantics
Type systems for programming languages
Handbook of theoretical computer science (vol. B)
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards a theory of type structure
Programming Symposium, Proceedings Colloque sur la Programmation
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A study of semantics, types and languages for databases and object-oriented programming
A study of semantics, types and languages for databases and object-oriented programming
Semantics for communication primitives in a polymorphic language
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The typed polymorphic label-selective λ-calculus
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A polymorphic calculus for views and object sharing (extended abstract)
PODS '94 Proceedings of the thirteenth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
Type-theoretic foundations for concurrent object-oriented programing
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Compiling polymorphism using intensional type analysis
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An introduction to Remy's fast polymorphic record projection
ACM SIGMOD Record
A polymorphic record calculus and its compilation
ACM Transactions on Programming Languages and Systems (TOPLAS)
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Polymorphism and type inference in database programming
ACM Transactions on Database Systems (TODS)
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An Unboxed Operational Semantics for ML Polymorphism
Lisp and Symbolic Computation
Lambda-splitting: a higher-order approach to cross-module optimizations
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A functional representation of data structures with a hole
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Polymorphic Environment Calculus and its Type-Inference Algorithm
Higher-Order and Symbolic Computation
Compilation and equivalence of imperative objects
Journal of Functional Programming
Extensible programming with first-class cases
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Polymorphic record calculi have recently attracted much attention as a typed foundation for object-oriented programming. This is based on the fact that a function that selects a field l of a record can be given a polymorphic type that enables it to be applied to various records containing a field l. Recent studies have established techniques to develop an ML-style type inference algorithm for such a polymorphic type system. There seems to be, however, no established method to compile an ML-style polymorphic record calculus into efficient code. The purpose of this paper is to present one such method. We define a polymorphic record calculus as an extension of Damas and Miler's proof system for ML. For this calculus, we define an implementation calculus where records are represented as arrays of (references to) values and field selection is performed by direct indexing. To represent polymorphic field selection, the implementation calculus contains an abstraction mechanism over indexes. We then develop an algorithm to translate the polymorphic record calculus into the implementation calculus by refining a type inference algorithm; it simultaneously computes a principal type scheme in the polymorphic record calculus and a correct implementation term in the implementation calculus. The type inference is shown to be sound and complete in the sense of Damas-Milner's algorithm for ML. Moreover, the polymorphic type system is shown to be sound with respect to an operational semantics of the translated terms in the implementation calculus.