Research directions in object-oriented programming
A denotational semantics of inheritance and its correctness
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Toward a typed foundation for method specialization and inheritance
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Safe type checking in a statically-typed object-oriented programming language
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Safe and decidable type checking in an object-oriented language
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Object-oriented type systems
Static typing for object-oriented programming
Science of Computer Programming
Structural decidable extensions of bounded quantification
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lower bounds on type inference with subtypes
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A theory of primitive objects: second-order systems
ESOP '94 Selected papers of ESOP '94, the 5th European symposium on Programming
Object-Oriented Software Construction
Object-Oriented Software Construction
A Theory of Objects
A lambda calculus of objects and method specialization
Nordic Journal of Computing
A Theory of Primitive Objects - Untyped and First-Order Systems
TACS '94 Proceedings of the International Conference on Theoretical Aspects of Computer Software
TAPSOFT '95 Proceedings of the 6th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
Type inference for variant object types
Information and Computation - FOOL VII
The recursive record semantics of objects revisited
Journal of Functional Programming
Automatic discovery of covariant read-only fields
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
The metavariable self is fundamental in object-oriented languages. Typing self in the presence of inheritance has been studied by Abadi and Cardelli, Bruce, and others. A key concept in these developments is the notion of selftype, which enables flexible type annotations that are impossible with recursive types and subtyping. Bruce et al. demonstrated that, for the language TOOPLE, type checking is decidable. Open until now is the problem of type inference with selftype.In this paper we present a simple type system with selftype, recursive types, and subtyping, and we prove that type inference is NP-complete. With recursive types and subtyping alone, type inference is known to be P-complete. Our example language is the object calculus of Abadi and Cardelli. Both our type inference algorithm and our lower bound are the first such results for a type system with selftype.