Results 11  20
of
33
Adding type constructor parameterization to Java
 FORMAL TECHNIQUES FOR JAVALIKE PROGRAMS (FTFJP’07) AT THE EUROPEAN CONFERENCE ON OBJECTORIENTED PROGRAMMING (ECOOP
, 2007
"... We present a generalization of Java’s parametric polymorphism that enables parameterization of classes and methods by type constructors, i.e., functions from types to types. Our extension is formalized as a calculus called FGJω. It is implemented in a prototype compiler and its type system is prov ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
We present a generalization of Java’s parametric polymorphism that enables parameterization of classes and methods by type constructors, i.e., functions from types to types. Our extension is formalized as a calculus called FGJω. It is implemented in a prototype compiler and its type system is proven safe and decidable. We describe and motivate our extension through two examples: the definition of generic datatypes with binary methods and the definition of generalized algebraic datatypes. The formalization and the safety and decidability proofs are, for space reasons, only shortly described.
B.C.: On decidability of nominal subtyping with variance
"... or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior
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.
Type Destructors
, 1998
"... We study a variant of System F that integrates and generalizes several existing proposals for calculi with structural typing rules. To the usual type constructors (!, \Theta, All, Some, Rec) we add a number of type destructors, each internalizing a useful fact about the subtyping relation. For exa ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
We study a variant of System F that integrates and generalizes several existing proposals for calculi with structural typing rules. To the usual type constructors (!, \Theta, All, Some, Rec) we add a number of type destructors, each internalizing a useful fact about the subtyping relation. For example, in F with products every closed subtype of a product S\ThetaT must itself be a product S 0 \ThetaT 0 with S 0 !:S and T 0 !:T. We internalise this observation by introducing type destructors .1 and .2 and postulating an equivalence T = j T.1\ThetaT.2 whenever T !: U\ThetaV (including, for example, when T is a variable). In other words, every subtype of a product type literally is a product type, modulo jconversion. Adding type destructors provides a clean solution to the problem of polymorphic update without introducing new term formers, new forms of polymorphism, or quantification over type operators. We illustrate this by giving elementary presentations of two wellknown e...
Towards equal rights for higherkinded types
 6TH INTERNATIONAL WORKSHOP ON MULTIPARADIGM PROGRAMMING WITH LANGUAGES AT THE EUROPEAN CONFERENCE ON OBJECTORIENTED PROGRAMMING (ECOOP
, 2007
"... Generics are a very popular feature of contemporary OO languages, such as Java, C # or Scala. Their support for genericity is lacking, however. The problem is that they only support abstracting over proper types, and not over generic types. This limitation makes it impossible to, e.g., define a pre ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
Generics are a very popular feature of contemporary OO languages, such as Java, C # or Scala. Their support for genericity is lacking, however. The problem is that they only support abstracting over proper types, and not over generic types. This limitation makes it impossible to, e.g., define a precise interface for Iterable, a core abstraction in Scala’s collection API. We implemented “type constructor polymorphism” in Scala 2.5, which solves this problem at the root, thus greatly reducing the duplication of type signatures and code.
Bounded Quantification with Bottom
 Computer Science Department, Indiana University
, 1997
"... While numerous extensions of Cardelli and Wegner's calculus of polymorphism and subtyping, Kernel Fun, have been studied during the past decade, one quite simple one has received little attention: the addition of a minimal type Bot, dual to the familiar maximal type Top. We develop basic metatheory ..."
Abstract

Cited by 5 (3 self)
 Add to MetaCart
While numerous extensions of Cardelli and Wegner's calculus of polymorphism and subtyping, Kernel Fun, have been studied during the past decade, one quite simple one has received little attention: the addition of a minimal type Bot, dual to the familiar maximal type Top. We develop basic metatheory for this extension. Although most of the usual properties of Kernel Fun (existence of meets and joins, decidability of subtyping and typing, subject reduction, etc.) also hold for the extended system, the presence of Bot introduces some surprising intricacies. In particular, a type variable bounded by Bot is actually a synonym for Bot; such "bottom variables" must be treated specially at several points. 1 Introduction The typed lambdacalculus Kernel Fun [CW85] and its wilder sibling, F [CG92, Ghe90, CMMS94] have become standard tools for the foundational study of programming languages combining subtyping and impredicative polymorphism. Their syntax and semantics have been investigated in ...
OrderSorted Inductive Types
, 1999
"... System F ! is an extension of system F ! with subtyping and bounded quantification. Ordersorted algebra is an extension of manysorted algebra with overloading and subtyping. We combine both formalisms to obtain IF ! , a higherorder typed calculus with subtyping, bounded quantification a ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
System F ! is an extension of system F ! with subtyping and bounded quantification. Ordersorted algebra is an extension of manysorted algebra with overloading and subtyping. We combine both formalisms to obtain IF ! , a higherorder typed calculus with subtyping, bounded quantification and ordersorted inductive types, i.e. data types with builtin subtyping and overloading. Moreover we show that IF ! enjoys important metatheoretic properties, including confluence, strong normalization, subject reduction and decidability of typechecking. 1 Introduction Typed functional programming languages such as Haskell and ML and typetheory based proofdevelopment systems such as Coq and Lego support the introduction of inductively defined types such as natural numbers or booleans, parameterized inductively defined types such as lists and even parameterized mutual inductively defined types such as trees and forests. In addition, those languages support the definition of functions ...
A Predicative TypeTheoretic Interpretation of Objects
, 1997
"... Predicative type theories are powerful tools for giving foundational interpretations of programming languages. Due to their explicit inductive construction, predicative type theories have multiple mathematical models that provide precise definitions of programming language features. However, not all ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Predicative type theories are powerful tools for giving foundational interpretations of programming languages. Due to their explicit inductive construction, predicative type theories have multiple mathematical models that provide precise definitions of programming language features. However, not all features have predicative interpretations, and current interpretations of objects rely on impredicative type theories, such as Girard's System F, because of the difficulty in specifying a type for objects in the presence of selfapplication. In this paper we show that objects have a predicative interpretation. We show that predicativity is associated with method monotonicity, and that binary methods prevent the inductive type construction. Our interpretation differs from impredicative accounts by replacing the use of recursive types for objects with conditions for method polymorphism over the self type. We further give a propositional meaning to objects in the type theory, providing a calc...
A Type System for Record Concatenation and Subtyping
, 1996
"... We define an extension of a secondorder type system with records, subtyping and record concatenation. This system can model the most important concepts of objectoriented languages. The novelty in our approach is that concatenation is only permitted if the types on common fields agree. We give exam ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
We define an extension of a secondorder type system with records, subtyping and record concatenation. This system can model the most important concepts of objectoriented languages. The novelty in our approach is that concatenation is only permitted if the types on common fields agree. We give examples of how objectoriented concepts can be modeled and show how the system can be translated to a type system without subtyping.
AntiSymmetry of HigherOrder Subtyping
 In Proceedings of the 8th Annual Conference on Computer Science Logic (CSL’99), J. Flum and M. RodríguezArtalejo, Eds. SpringerVerlag LNCS 1683
, 1999
"... . This paper shows that the subtyping relation of a higherorder lambda calculus, F ! , is antisymmetric. It exhibits the rst such proof, establishing in the process that the subtyping relation is a partial orderreexive, transitive, and antisymmetric up to equality. While a subtyping relat ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
. This paper shows that the subtyping relation of a higherorder lambda calculus, F ! , is antisymmetric. It exhibits the rst such proof, establishing in the process that the subtyping relation is a partial orderreexive, transitive, and antisymmetric up to equality. While a subtyping relation is reexive and transitive by denition, antisymmetry is a derived property. The result, which may seem obvious to the nonexpert, is technically challenging, and had been an open problem for almost a decade. In this context, typed operational semantics for subtyping oers a powerful new technology to solve the problem: of particular importance is our extended rule for the wellformedness of types with head variables. The paper also gives a presentation of F ! without a relation for equality, apparently the rst such, and shows its equivalence with the traditional presentation. 1 Introduction Objectoriented programming languages such as Smalltalk, C++, Modula 3, and ...