Results 1 
9 of
9
Simple TypeTheoretic Foundations for ObjectOriented Programming
, 1993
"... We develop a formal, typetheoretic account of the basic mechanisms of objectoriented programming: encapsulation, message passing, subtyping, and inheritance. By modeling object encapsulation in terms of existential types instead of the recursive records used in other recent studies, we obtain a s ..."
Abstract

Cited by 159 (17 self)
 Add to MetaCart
We develop a formal, typetheoretic account of the basic mechanisms of objectoriented programming: encapsulation, message passing, subtyping, and inheritance. By modeling object encapsulation in terms of existential types instead of the recursive records used in other recent studies, we obtain a substantial simplification both in the model of objects and in the underlying typed calculus.
A Core Calculus of Classes and Mixins
, 1999
"... We develop an imperative calculus that provides a formal model for both single and mixin inheritance. By introducing classes and mixins as the basic objectoriented constructs in a calculus with records and references, we obtain a system with an intuitive operational semantics. New ..."
Abstract

Cited by 53 (15 self)
 Add to MetaCart
We develop an imperative calculus that provides a formal model for both single and mixin inheritance. By introducing classes and mixins as the basic objectoriented constructs in a calculus with records and references, we obtain a system with an intuitive operational semantics. New
Simple objects for Standard ML
 In 1996 ACM SIGPLAN Conference on Programming Language Design and Implementation
, 1996
"... We propose a new approach to adding objects to Standard ML (SML) based on explicit declarations of object types, object constructors, and subtyping relationships, with a generalization of the SML case statement to a "typecase" on object types. The language, called Object ML (OML), has a type system ..."
Abstract

Cited by 42 (1 self)
 Add to MetaCart
We propose a new approach to adding objects to Standard ML (SML) based on explicit declarations of object types, object constructors, and subtyping relationships, with a generalization of the SML case statement to a "typecase" on object types. The language, called Object ML (OML), has a type system that conservatively extends the SML type system, preserves sound static typing, and permits type inference. The type system sacrifices some of the expressiveness found in recently proposed schemes, but has the virtue of simplicity. We give examples of how features found in other objectoriented languages can be emulated in OML, discuss the formal properties of OML, and describe some implementation issues. Keywords: Programming language design, objectoriented programming, functional programming, Standard ML. 1 Introduction A fundamental tension of language design is "keeping the language small" versus "providing support for common idioms. " This fundamental tension can be seen clearly in S...
ObjectOriented Programming Without Recursive Types
 In Proc 20th ACM Symp. Principles of Programming Languages
"... It is widely agreed that recursive types are inherent in the static typing of the essential mechanisms of objectoriented programming: encapsulation, message passing, subtyping, and inheritance. We demonstrate here that modeling object encapsulation in terms of existential types yields a substantiall ..."
Abstract

Cited by 35 (1 self)
 Add to MetaCart
It is widely agreed that recursive types are inherent in the static typing of the essential mechanisms of objectoriented programming: encapsulation, message passing, subtyping, and inheritance. We demonstrate here that modeling object encapsulation in terms of existential types yields a substantially more straightforward explanation of these features in a simpler calculus without recursive types. 1 Introduction Static type systems for objectoriented programming languages have progressed significantly in the past decade. The line of research begun by Cardelli [11] and continued by Cardelli [18, 17, 14, 13], Mitchell [32, 10, 33], Bruce [8, 5, 7], and others [31, 39, 21, 10, 23, 20, 19, 26, 29, 44, 45, 46] has culminated in typetheoretic accounts [6, 14] of many of the features of languages like Smalltalk [28]. Our goal here is to reformulate the essential mechanisms of these accounts using a simpler type theory: we give a complete model of encapsulation, message passing, subtyping, ...
Statically Typed Friendly Functions via Partially Abstract Types
, 1993
"... A wellknown shortcoming of the object model of Simula and Smalltalk is the inability to deal cleanly with methods that require access to the internal state of more than one object at a time. Recent language designs have therefore extended the basic object model with notions such as friends' me ..."
Abstract

Cited by 26 (1 self)
 Add to MetaCart
A wellknown shortcoming of the object model of Simula and Smalltalk is the inability to deal cleanly with methods that require access to the internal state of more than one object at a time. Recent language designs have therefore extended the basic object model with notions such as friends' methods and protected features, which allow external access to the internal state of objects but limit the scope in which such access can be used. We show that a variant of this idea can be added to any typetheoretic model of the basic objectoriented mechanisms (encapsulation, message passing, and inheritance), using a construction based on Cardelli and Wegner's partially abstract types, a refinement of Mitchell and Plotkin's typetheoretic treatment of abstract types.
Divergence of F≤ Type Checking
"... System F≤ is an extension of secondorder typed lambda calculus, where a subtype hierarchy among types is defined, and bounded secondorder lambda abstraction is allowed. This language is a basis for much of the current research on integration of typed functional languages with subtypes and inherita ..."
Abstract

Cited by 14 (4 self)
 Add to MetaCart
System F≤ is an extension of secondorder typed lambda calculus, where a subtype hierarchy among types is defined, and bounded secondorder lambda abstraction is allowed. This language is a basis for much of the current research on integration of typed functional languages with subtypes and inheritance. An algorithm to perform type checking for F≤ expressions has been known since the language Fun was defined. The algorithm has been proved complete, by the author and P.L. Curien, which means that it is a semidecision procedure for the typechecking problem. In this paper we show that this algorithm is not a decision procedure, by exhibiting a term which makes it diverge. This result was the basis of Pierce's proof of undecidability of typing for F≤. We study the behavior of the algorithm to show that our diverging judgement is in some sense contained in any judgement which makes the algorithm diverge. On the basis of this result, and of other results in the paper, we claim that the c...
A Core Calculus of Classes and Objects
 ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE
, 1999
"... We present an imperative calculus for a classbased language. By introducing classes as the basic objectoriented construct in a calculus with records and references, we obtain a system with an intuitive operational semantics. Objects are instantiated from classes and represented by records. The ty ..."
Abstract

Cited by 9 (3 self)
 Add to MetaCart
We present an imperative calculus for a classbased language. By introducing classes as the basic objectoriented construct in a calculus with records and references, we obtain a system with an intuitive operational semantics. Objects are instantiated from classes and represented by records. The type system for objects uses only functional, record, and reference types, and there is a clean separation between subtyping and inheritance. We demonstrate that the calculus is sound and suciently expressive to model advanced language features such as inheritance with method rede nition, multilevel encapsulation, and modular object construction.
Inheritance of Proofs
, 1996
"... The CurryHoward isomorphism, a fundamental property shared by many type theories, establishes a direct correspondence between programs and proofs. This suggests that the same structuring principles that ease programming be used to simplify proving as well. To exploit objectoriented structuring me ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
The CurryHoward isomorphism, a fundamental property shared by many type theories, establishes a direct correspondence between programs and proofs. This suggests that the same structuring principles that ease programming be used to simplify proving as well. To exploit objectoriented structuring mechanisms for verification, we extend the objectmodel of Pierce and Turner, based on the higher order typed calculus F ! , with a proof component. By enriching the (functional) signature of objects with a specification, the methods and their correctness proofs are packed together in the objects. The uniform treatment of methods and proofs gives rise in a natural way to objectoriented proving principles  including inheritance of proofs, late binding of proofs, and encapsulation of proofs  as analogues to objectoriented programming principles. We have used Lego, a typetheoretic proof checker, to explore the feasibility of this approach. In particular, we have verified a small hier...
Mutable Objects
, 1993
"... There are now several typetheoretic models for objectoriented languages based on higherorder polymorphic lambdacalculi [Bru92, Bru93, CCH 89, CHC90, Mit90, PT93]. It has been claimed that these models can be extended straightforwardly to handle objects with mutable state. Following a sugges ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
There are now several typetheoretic models for objectoriented languages based on higherorder polymorphic lambdacalculi [Bru92, Bru93, CCH 89, CHC90, Mit90, PT93]. It has been claimed that these models can be extended straightforwardly to handle objects with mutable state. Following a suggestion of Didier R'emy, we verify this claim for the model proposed in [PT93].