Results 1 - 10
of
16
Featherweight Java: A Minimal Core Calculus for Java and GJ
- ACM Transactions on Programming Languages and Systems
, 1999
"... Several recent studies have introduced lightweight versions of Java: reduced languages in which complex features like threads and reflection are dropped to enable rigorous arguments about key properties such as type safety. We carry this process a step further, omitting almost all features of the fu ..."
Abstract
-
Cited by 466 (14 self)
- Add to MetaCart
Several recent studies have introduced lightweight versions of Java: reduced languages in which complex features like threads and reflection are dropped to enable rigorous arguments about key properties such as type safety. We carry this process a step further, omitting almost all features of the full language (including interfaces and even assignment) to obtain a small calculus, Featherweight Java, for which rigorous proofs are not only possible but easy. Featherweight Java bears a similar relation to Java as the lambda-calculus does to languages such as ML and Haskell. It offers a similar computational “feel, ” providing classes, methods, fields, inheritance, and dynamic typecasts with a semantics closely following Java’s. A proof of type safety for Featherweight Java thus illustrates many of the interesting features of a safety proof for the full language, while remaining pleasingly compact. The minimal syntax, typing rules, and operational semantics of Featherweight Java make it a handy tool for studying the consequences of extensions and variations. As an illustration of its utility in this regard, we extend Featherweight Java with generic classes in the style of GJ (Bracha, Odersky, Stoutamire, and Wadler) and give a detailed proof of type safety. The extended system formalizes for the first time some of the key features
A Record Calculus Based on Symmetric Concatenation
- In Proc. of the ACM Symp. on Principles of Programming Languages
, 1991
"... Type systems for operations on extensible records form a foundation for statically typed languages addressing some aspects of object oriented programming and database applications. A number of primitive operations have been proposed: extending a record with a new field, overwriting an existing field ..."
Abstract
-
Cited by 55 (2 self)
- Add to MetaCart
Type systems for operations on extensible records form a foundation for statically typed languages addressing some aspects of object oriented programming and database applications. A number of primitive operations have been proposed: extending a record with a new field, overwriting an existing field, removing a field, and various kinds of concatenation. We show here that a record calculus based on a symmetric concatenation operator, where two records may be concatenated only if they have no overlapping fields, also captures the types of many other useful primitive record operations. "Mergeability constraints" are expressed directly using explicit annotations on type variables and constrained second-order type quantification instead of a rule of subsumption; we argue that the resulting system is more straightforward than subsumption-based alternatives. This research was supported in part by the Office of Naval Research and in part by the Defense Advanced Research Projects Agency (DOD), ...
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 object-oriented constructs in a -calculus with records and references, we obtain a system with an intuitive operational semantics. New ..."
Abstract
-
Cited by 49 (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 object-oriented constructs in a -calculus with records and references, we obtain a system with an intuitive operational semantics. New
The Recursive Record Semantics of Objects Revisited
- Journal of Functional Programming
, 2001
"... In a call-by-value language, representing objects as recursive records requires using an unsafe fixpoint. We design, for a core language including extensible records, a type system which rules out unsafe recursion and still supports the reconstruction of a principal type. We illustrate the expressiv ..."
Abstract
-
Cited by 33 (1 self)
- Add to MetaCart
In a call-by-value language, representing objects as recursive records requires using an unsafe fixpoint. We design, for a core language including extensible records, a type system which rules out unsafe recursion and still supports the reconstruction of a principal type. We illustrate the expressive power of this language with respect to object-oriented programming by introducing a sub-language for "mixin-based" programming.
Polymorphic Type Inference and Semi-Unification
, 1989
"... In the last ten years declaration-free programming languages with a polymorphic typing discipline (ML, B) have been developed to approximate the flexibility and conciseness of dynamically typed languages (LISP, SETL) while retaining the safety and execution efficiency of conventional statically type ..."
Abstract
-
Cited by 21 (2 self)
- Add to MetaCart
In the last ten years declaration-free programming languages with a polymorphic typing discipline (ML, B) have been developed to approximate the flexibility and conciseness of dynamically typed languages (LISP, SETL) while retaining the safety and execution efficiency of conventional statically typed languages (Algol68, Pascal). These polymorphic languages can be type checked at compile time, yet allow functions whose arguments range over a variety of types. We investigate several polymorphic type systems, the most powerful of which, termed Milner-Mycroft Calculus, extends the so-called let-polymorphism found in, e.g., ML with a polymorphic typing rule for recursive definitions. We show that semi-unification, the problem of solving inequalities over firstorder terms, characterizes type checking in the Milner-Mycroft Calculus to polynomial time, even in the restricted case where nested definitions are disallowed. This permits us to extend some infeasibility results for related combinato...
A Core Calculus of Classes and Objects
- ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE
, 1999
"... We present an imperative calculus for a class-based language. By introducing classes as the basic object-oriented 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 class-based language. By introducing classes as the basic object-oriented 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, multi-level encapsulation, and modular object construction.
Mixin modules, modules and extended value binding in a call-by-value setting
, 2003
"... Mixin modules, modules and extended value binding ..."
N.: Eriskay: a programming language based on game semantics
"... We report on an ongoing project to design a strongly typed, class-based objectoriented language based around ideas from game semantics. Part of our goal is to create a powerful modern programming language whose clean semantic basis renders it amenable to work in program verification; however, we arg ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
We report on an ongoing project to design a strongly typed, class-based objectoriented language based around ideas from game semantics. Part of our goal is to create a powerful modern programming language whose clean semantic basis renders it amenable to work in program verification; however, we argue that our semantically inspired approach also yields benefits of more immediate relevance to programmers, such as expressive new language constructs and novel type systems for enforcing security properties of the language. We describe a simple-minded game model with a rich mathematical structure, and explain how this model may be used to guide the design of our language. We then focus on three specific areas where our approach appears to offer something new: linear types and continuations; observational equivalence for class types; and static control of the use of higher-order store. In a substantial appendix, we present the formal definition of a fragment of our language which embodies many of the innovative features of the full language. 1 Introduction and
The SLinks Language
, 2005
"... This report presents a prototype interpreter for a simple functional language, called SLinks. The focus of this work is two-fold. One side is the design of a type inference system, based on the Hindley-Milner algorithm, with additional support for record and variant types. This type system is simila ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
This report presents a prototype interpreter for a simple functional language, called SLinks. The focus of this work is two-fold. One side is the design of a type inference system, based on the Hindley-Milner algorithm, with additional support for record and variant types. This type system is similar to row variable based systems as described by Rémy and Wand. The other side is the support of database querying from within the language. In particular, the focus is on automatic optimisation of SLinks expressions into SQL queries. The resulting prototype, that tested and will be used to test techniques for Philip Wadler’s upcoming Links language, was heavily inspired by Wong’s Kleisi and CPL language. It does however extends it in various ways, in particular as far as record and variant operators are handled in typing and SQL

