Results 1  10
of
49
Type systems
 The Computer Science and Engineering Handbook
, 1997
"... This paper presents an overview of the programming language Modula3, and a more detailed description of its type system. 1 ..."
Abstract

Cited by 200 (1 self)
 Add to MetaCart
This paper presents an overview of the programming language Modula3, and a more detailed description of its type system. 1
Operations on records
 Mathematical Structures in Computer Science
, 1991
"... We define a simple collection of operations for creating and manipulating record structures, where records are intended as finite associations of values to labels. A secondorder type system over these operations supports both subtyping and polymorphism. We provide typechecking algorithms and limite ..."
Abstract

Cited by 141 (13 self)
 Add to MetaCart
We define a simple collection of operations for creating and manipulating record structures, where records are intended as finite associations of values to labels. A secondorder type system over these operations supports both subtyping and polymorphism. We provide typechecking algorithms and limited semantic models. Our approach unifies and extends previous notions of records, bounded quantification, record extension, and parametrization by rowvariables. The general aim is to provide foundations for concepts found in objectoriented languages, within a framework based on typed lambdacalculus.
A Calculus for Overload Functions with Subtyping

, 1992
"... We present a simple extension of typed calculus where functions can be overloaded by putting different "branches of code" together. When the function is applied, the branch to execute is chosen according to a particular selection rule which depends on the type of the argument. The crucial featu ..."
Abstract

Cited by 141 (28 self)
 Add to MetaCart
We present a simple extension of typed calculus where functions can be overloaded by putting different "branches of code" together. When the function is applied, the branch to execute is chosen according to a particular selection rule which depends on the type of the argument. The crucial feature of the present approach is that the branch selection depends on the "runtime type" of the argument, which may differ from its compiletime type, because of the existence of a subtyping relation among types. Hence overloading cannot be eliminated by a static analysis of code, but is an essential feature to be dealt with during computation. We obtain in this way a typedependent calculus, which differs from the various calculi where types do not play any role during computation. We prove Confluence and a generalized SubjectReduction theorem for this calculus. We prove Strong Normalization for a "stratified" subcalculus. The definition of this calculus is guided by the understand...
A Paradigmatic ObjectOriented Programming Language: Design, Static Typing and Semantics
 Journal of Functional Programming
, 1993
"... In order to illuminate the fundamental concepts involved in objectoriented programming languages, we describe the design of TOOPL, a paradigmatic, staticallytyped, functional, objectoriented programming language which supports classes, objects, methods, hidden instance variables, subtypes, and in ..."
Abstract

Cited by 118 (9 self)
 Add to MetaCart
In order to illuminate the fundamental concepts involved in objectoriented programming languages, we describe the design of TOOPL, a paradigmatic, staticallytyped, functional, objectoriented programming language which supports classes, objects, methods, hidden instance variables, subtypes, and inheritance. It has proven to be quite difficult to design such a language which has a secure type system. A particular problem with statically type checking objectoriented languages is designing typechecking rules which ensure that methods provided in a superclass will continue to be type correct when inherited in a subclass. The typechecking rules for TOOPL have this feature, enabling library suppliers to provide only the interfaces of classes with actual executable code, while still allowing users to safely create subclasses. In order to achieve greater expressibility while retaining typesafety, we choose to separate the inheritance and subtyping hierarchy in the language. The design of...
A theory of primitive objects: secondorder systems
 Proc. ESOP’94  European Symposium on Programming
"... We describe a secondorder calculus of objects. The calculus supports object subsumption, method override, and the type Self. It is constructed as an extension of System F with subtyping, recursion, and firstorder object types. 1. ..."
Abstract

Cited by 54 (8 self)
 Add to MetaCart
We describe a secondorder calculus of objects. The calculus supports object subsumption, method override, and the type Self. It is constructed as an extension of System F with subtyping, recursion, and firstorder object types. 1.
Type Checking HigherOrder Polymorphic MultiMethods
, 1997
"... We present a new predicative and decidable type system, called ML , suitable for languages that integrate functional programming and parametric polymorphism in the tradition of ML [21, 28], and classbased objectoriented programming and higherorder multimethods in the tradition of CLOS [12]. Inste ..."
Abstract

Cited by 51 (0 self)
 Add to MetaCart
We present a new predicative and decidable type system, called ML , suitable for languages that integrate functional programming and parametric polymorphism in the tradition of ML [21, 28], and classbased objectoriented programming and higherorder multimethods in the tradition of CLOS [12]. Instead of using extensible records as a foundation for objectoriented extensions of functional languages, we propose to reinterpret ML datatype declarations as abstract and concrete class declarations, and to replace pattern matching on runtime values by dynamic dispatch on runtime types. ML is based on universally quantified polymorphic constrained types. Constraints are conjunctions of inequalities between monotypes built from type constructors organized into extensible and partially ordered classes. We give type checking rules for a small, explicitly typed functional language `a la XML [20] with multimethods, show that the resulting system has decidable minimal types, and discuss subject ...
On subtyping and matching
 In Proceedings ECOOP '95
, 1995
"... Abstract. A relation between recursive object types, called matching, has been proposed as a generalization of subtyping. Unlike subtyping, matching does not support subsumption, but it does support inheritance of binary methods. We argue that matching is a good idea, but that it should not be regar ..."
Abstract

Cited by 45 (3 self)
 Add to MetaCart
Abstract. A relation between recursive object types, called matching, has been proposed as a generalization of subtyping. Unlike subtyping, matching does not support subsumption, but it does support inheritance of binary methods. We argue that matching is a good idea, but that it should not be regarded as a form of Fbounded subtyping (as was originally intended). We show that a new interpretation of matching as higherorder subtyping has better properties. Matching turns out to be a thirdorder construction, possibly the only one to have been proposed for general use in programming.
Decidability of HigherOrder Subtyping with Intersection Types
 University of Edinburgh, LFCS
, 1994
"... The combination of higherorder subtyping with intersection types yields a typed model of objectoriented programming with multiple inheritance [11]. The target calculus, F ! , a natural generalization of Girard's system F ! with intersection types and bounded polymorphism, is of independent i ..."
Abstract

Cited by 40 (11 self)
 Add to MetaCart
The combination of higherorder subtyping with intersection types yields a typed model of objectoriented programming with multiple inheritance [11]. The target calculus, F ! , a natural generalization of Girard's system F ! with intersection types and bounded polymorphism, is of independent interest, and is our subject of study. Our main contribution is the proof that subtyping in F ! is decidable. This yields as a corollary the decidability of subtyping in F ! , its intersection free fragment, because the F ! subtyping system is a conservative extension of that of F ! . The calculus presented in [8] has no reductions on types. In the F ! subtyping system the presence of ficonversion  an extension of ficonversion with distributivity laws  drastically increases the complexity of proving the decidability of the subtyping relation. Our proof consists of, firstly, defining an algorithmic presentation of the subtyping system of F ! , secondly, proving that th...
Extensible records in a pure calculus of subtyping
 In Theoretical Aspects of ObjectOriented Programming
, 1994
"... Extensible records were introduced by Mitchell Wand while studying type inference in a polymorphic λcalculus with record types. This paper describes a calculus with extensible records, F <:ρ, that can be translated into a simpler calculus, F <: , lacking any record primitives. Given independent axi ..."
Abstract

Cited by 38 (9 self)
 Add to MetaCart
Extensible records were introduced by Mitchell Wand while studying type inference in a polymorphic λcalculus with record types. This paper describes a calculus with extensible records, F <:ρ, that can be translated into a simpler calculus, F <: , lacking any record primitives. Given independent axiomatizations of F <:ρ and F <: (the former being an extension of the latter) we show that the translation preserves typing, subtyping, and equality. F <:ρ can then be used as an expressive calculus of extensible records, either directly or to give meaning to yet other languages. We show that F <:ρ can express many of the standard benchmark examples that appear in the literature. Like other record calculi that have been proposed, F <:ρ has a rather complex set of rules but, unlike those other calculi, its rules are justified by a translation to a very simple calculus. We argue that thinking in terms of translations may help in simplifying and organizing the various record calculi that have been proposed, as well as in generating new ones.
Intersection Types and Bounded Polymorphism
, 1996
"... this paper (Compagnoni, Intersection Types and Bounded Polymorphism 3 1994; Compagnoni, 1995) has been used in a typetheoretic model of objectoriented multiple inheritance (Compagnoni & Pierce, 1996). Related calculi combining restricted forms of intersection types with higherorder polymorphism ..."
Abstract

Cited by 37 (0 self)
 Add to MetaCart
this paper (Compagnoni, Intersection Types and Bounded Polymorphism 3 1994; Compagnoni, 1995) has been used in a typetheoretic model of objectoriented multiple inheritance (Compagnoni & Pierce, 1996). Related calculi combining restricted forms of intersection types with higherorder polymorphism and dependent types have been studied by Pfenning (Pfenning, 1993). Following a more detailed discussion of the pure systems of intersections and bounded quantification (Section 2), we describe, in Section 3, a typed calculus called F ("Fmeet ") integrating the features of both. Section 4 gives some examples illustrating this system's expressive power. Section 5 presents the main results of the paper: a prooftheoretic analysis of F 's subtyping and typechecking relations leading to algorithms for checking subtyping and for synthesizing minimal types for terms. Section 6 discusses semantic aspects of the calculus, obtaining a simple soundness proof for the typing rules by interpreting types as partial equivalence relations; however, another prooftheoretic result, the nonexistence of least upper bounds for arbitrary pairs of types, implies that typed models may be more difficult to construct. Section 7 offers concluding remarks. 2. Background