Results 1 -
8 of
8
Type systems
- The Computer Science and Engineering Handbook
, 1997
"... This paper presents an overview of the programming language Modula-3, and a more detailed description of its type system. 1 ..."
Abstract
-
Cited by 188 (1 self)
- Add to MetaCart
This paper presents an overview of the programming language Modula-3, and a more detailed description of its type system. 1
Typeful programming
, 1989
"... There exists an identifiable programming style based on the widespread use of type information handled through mechanical typechecking techniques. This typeful programming style is in a sense independent of the language it is embedded in; it adapts equally well to functional, imperative, object-orie ..."
Abstract
-
Cited by 133 (2 self)
- Add to MetaCart
There exists an identifiable programming style based on the widespread use of type information handled through mechanical typechecking techniques. This typeful programming style is in a sense independent of the language it is embedded in; it adapts equally well to functional, imperative, object-oriented, and algebraic programming, and it is not incompatible with relational and concurrent programming. The main purpose of this paper is to show how typeful programming is best supported by sophisticated type systems, and how these systems can help in clarifying programming issues and in adding power and regularity to languages. We start with an introduction to the notions of types, subtypes and polymorphism. Then we introduce a general framework, derived in part from constructive logic, into which most of the known type systems can be accommodated and extended. The main part of the paper shows how this framework can be adapted systematically to cope with actual programming constructs. For concreteness we describe a particular programming language with advanced features; the emphasis here is on the combination of subtyping and polymorphism. We then discuss how typing concepts apply to large programs, made of collections of modules, and very large programs, made of collections of large programs. We also sketch how typing applies to system programming; an area which by nature escapes rigid typing. In summary, we compare the most common programming styles, suggesting that many of them are compatible with, and benefit from, a typeful discipline.
A theory of primitive objects: second-order systems
- Proc. ESOP’94 - European Symposium on Programming
"... We describe a second-order 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 first-order object types. 1. ..."
Abstract
-
Cited by 53 (7 self)
- Add to MetaCart
We describe a second-order 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 first-order object types. 1.
Extensible records in a pure calculus of subtyping
- In Theoretical Aspects of Object-Oriented 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 35 (8 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.
The Quest Language and System
- Digital Equipment Corporation, Systems Research
, 1994
"... 2. System tutorial 3. The big picture 3.1. Kinds, types, and values 3.2. Signatures and bindings ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
2. System tutorial 3. The big picture 3.1. Kinds, types, and values 3.2. Signatures and bindings
Formal Parametric Polymorphism
- Theoretical Computer Science
, 1993
"... A polymorphic function is parametric if its behavior does not depend on the type at which it is instantiated. Starting with Reynolds's work, the study of parametricity is typically semantic. In this paper, we develop a syntactic approach to parametricity, and a formal system that embodies this appro ..."
Abstract
- Add to MetaCart
A polymorphic function is parametric if its behavior does not depend on the type at which it is instantiated. Starting with Reynolds's work, the study of parametricity is typically semantic. In this paper, we develop a syntactic approach to parametricity, and a formal system that embodies this approach, called system R . Girard's system F deals with terms and types; R is an extension of F that deals also with relations between types. In R , it is possible to derive theorems about functions from their types, or "theorems for free", as Wadler calls them. An easy "theorem for free" asserts that the type "(X)XBool contains only constant functions; this is not provable in F. There are many harder and more substantial examples. Various metatheorems can also be obtained, such as a syntactic version of Reynolds's abstraction theorem. 1. Explicit relations A polymorphic function is parametric if its behavior does not depend on the type at which it is instantiated [Strachey 1967] . A function that reverses lists, for example, is parametric because it does not look at the types of the elements of the lists given as inputs. There are important non-parametric polymorphic functions, such as a print function that maps values of any type to text representations. With this caveat, it can be argued that "truly" polymorphic functions are parametric, and in any case it is the parametric polymorphic functions that form the core of languages such as ML [Milner, Tofte, Harper 1989] . Reynolds's work provides a precise counterpart to the informal definition of parametricity just given [Reynolds 1983; Ma, Reynolds 1991] . Reynolds's abstraction theorem concerns a language similar to Girard 's system F [Girard, Lafont, Taylor 1989], and implies that the instances of a polymorphic function at d...
An extension of system F with subtyping
, 1991
"... System F is a well-known typed l-calculus with polymorphic types, which provides a basis for polymorphic programming languages. We study an extension of F, called F <: (pronounced ef-sub) that combines parametric polymorphism with subtyping. The main focus of the paper is the equational theory of F ..."
Abstract
- Add to MetaCart
System F is a well-known typed l-calculus with polymorphic types, which provides a basis for polymorphic programming languages. We study an extension of F, called F <: (pronounced ef-sub) that combines parametric polymorphism with subtyping. The main focus of the paper is the equational theory of F <: , which is related to PER models and the notion of parametricity. We study some categorical properties of the theory when restricted to closed terms, including interesting categorical isomorphisms. We also investigate proof-theoretical properties, such as the conservativity of typing judgments with respect to F. We demonstrate by a set of examples how a range of constructs may be encoded in F <: . These include record operations and subtyping hierarchies that are related to features of object-oriented languages. Appears in: International Conference on Theoretical Aspects of Computer Software, T.Ito, A.R.Meyer Eds., Lecture Notes in Computer Science n. 526, pp 750-770, Springer Verlag, 19...

