Results 11 -
18 of
18
Build, augment and destroy. Universally
- In Asian Symposium on Programming Languages, Proceedings
, 2004
"... Abstract. We give a semantic footing to the fold/build syntax of programming with inductive types, covering shortcut deforestation, based on a universal property. Specifically, we give a semantics for inductive types based on limits of algebra structure forgetting functors and show that it is equiva ..."
Abstract
-
Cited by 3 (3 self)
- Add to MetaCart
Abstract. We give a semantic footing to the fold/build syntax of programming with inductive types, covering shortcut deforestation, based on a universal property. Specifically, we give a semantics for inductive types based on limits of algebra structure forgetting functors and show that it is equivalent to the usual initial algebra semantics. We also give a similar semantic account of the augment generalization of build and of the unfold/destroy syntax of coinductive types. 1
Relational Parametricity for Higher Kinds
"... Abstract. Reynolds ’ notion of relational parametricity has been extremely influential and well studied for polymorphic type theories such as System F. The extension of relational parametricity to higher kinded polymorphism, which allows quantification over type operators as well as types, has not b ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Abstract. Reynolds ’ notion of relational parametricity has been extremely influential and well studied for polymorphic type theories such as System F. The extension of relational parametricity to higher kinded polymorphism, which allows quantification over type operators as well as types, has not been as well studied. In this paper we give a model of relational parametricity for System F ω and investigate some of its consequences. 1
Categorical Combinators for Charity
, 1996
"... A 2-categorical notion of parametric combinator is introduced. These combinators are operations for constructing arrows in a category and satisfy a 2-categorical abstraction of parametricity for strictly covariant functors. Inductive and co-inductive datatypes are compatible with these combinators a ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
A 2-categorical notion of parametric combinator is introduced. These combinators are operations for constructing arrows in a category and satisfy a 2-categorical abstraction of parametricity for strictly covariant functors. Inductive and co-inductive datatypes are compatible with these combinators and their universal properties are closely related to parametricity. The Charity programming language is based on strong datatypes which are a specialization of 2-categorical datatypes. Stong combinators (which are an appropriate specialization of 2-categorical combinators) provide a model of polymorphic functions in Charity. ii Contents Abstract ii Contents iii 1 Introduction 1 2 Charity 4 2.1 The Term Logic . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3 Strong Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4 Strong Combinators . . . . . . . . . . . . . . . . . . . . . . . . 17 3 2-cate...
Subtyping Parametric and Dependent Types
, 1996
"... A type may be a subtype of another type. The intuition about this should be clear: a type is a type of data, some data then may live in a given type as well as in a larger one, up to a simple "transformation". The advantage is that those data may be "seen" or used in different contexts. The formal ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
A type may be a subtype of another type. The intuition about this should be clear: a type is a type of data, some data then may live in a given type as well as in a larger one, up to a simple "transformation". The advantage is that those data may be "seen" or used in different contexts. The formal treatment of this intuition, though, is not so obvious, in particular when data may be programs. In Object Oriented Programming, where the issue of "reusing data" is crucial, there has been a long-lasting discussion on "inheritance" and ... little agreement. There are several ways to understand and formalize inheritance, which depend on the specific programming environment used. Since early work of Cardelli and Wegner, there has been a large amount of papers developing several possible functional approaches to inheritance, as subtyping. Indeed, functional subtyping captures only one point of view on inheritance, yet this notion largely motivated most of that work. Whethe
On Extensions of. . . : Second-Order Lambda-Calculus with Subtyping
, 1994
"... F was an extension of a second-order -calculus F which has parametric polymorphism with subtyping and bounded quantification, introduced by Ghelli to apply second-order -calculi to the framework of object-oriented languages. However, it is impossible to know the amount of information of a type-che ..."
Abstract
- Add to MetaCart
F was an extension of a second-order -calculus F which has parametric polymorphism with subtyping and bounded quantification, introduced by Ghelli to apply second-order -calculi to the framework of object-oriented languages. However, it is impossible to know the amount of information of a type-checked term before evaluation since the subsumption rules are included in F . To overcome this problem, we provided new calculi cF + and cF ++ as extensions of F , and investigated their proof-theoretic properties. cF + includes a new type Range(X) , and cF ++ includes two new types Range(X) and Inst(X; T ) . For example, the type Range(X) is provided for a type variable X whose upper bound is a function type, as a codomain type of X . When a function type S ! T is substituted for X , Range(S ! T ) is reduced to T . For a type variable X whose upper bound is a universal type, the type Inst(X; U) is provided. When a universal type 8Y S:T is substituted for X , Inst(8Y S:T;U) is re...
Logic Column 6
"... Types Peter W. O'Hearn Department of Computer Science Queen Mary & Westfield College (ohearn@dcs.qmw.ac.uk) October 7, 1998 1 Introduction Abstraction is one of the pillars of computer science. Of course, choosing the right concepts to emphasize, and details to suppress, is crucial in all of scie ..."
Abstract
- Add to MetaCart
Types Peter W. O'Hearn Department of Computer Science Queen Mary & Westfield College (ohearn@dcs.qmw.ac.uk) October 7, 1998 1 Introduction Abstraction is one of the pillars of computer science. Of course, choosing the right concepts to emphasize, and details to suppress, is crucial in all of science, but in computer science the role of abstraction extends beyond that of sensible methodology. For in computing we have seen the emergence of an array of constructs and methods whose chief purpose is to provide general mechanisms for achieving, validating, or enforcing abstraction, rather than being specific instances or examples of it. Among these are programming concepts such as objects, procedures, abstract data types and modules, and mathematical methods such as simulation and logical relations. But what, more precisely, is the "abstraction" achieved by these constructs? In the case of procedural abstraction, a more or less satisfactory explanation can be given in terms of functions....
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...
Subtyping Parametric and Dependent Types -- An introduction
, 1996
"... A type may be a subtype of another type. The intuition about this should be clear: a type is a type of data, some data then may live in a given type as well as in a larger one, up to a simple "transformation". The advantage is that those data may be "seen" or used in different contexts. The formal ..."
Abstract
- Add to MetaCart
A type may be a subtype of another type. The intuition about this should be clear: a type is a type of data, some data then may live in a given type as well as in a larger one, up to a simple "transformation". The advantage is that those data may be "seen" or used in different contexts. The formal treatment of this intuition, though, is not so obvious, in particular when data may be programs. In Object Oriented Programming, where the issue of "reusing data" is crucial, there has been a long-lasting discussion on "inheritance" and ... little agreement. There are several ways to understand and formalize inheritance, which depend on the specific programming environment used. Since early work of Cardelli and Wegner, there has been a large amount of papers developing several possible functional approaches to inheritance, as subtyping. Indeed, functional subtyping captures only one point of view on inheritance, yet this notion largely motivated most of that work. Whethe

