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 4 (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 4 (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 2categorical notion of parametric combinator is introduced. These combinators are operations for constructing arrows in a category and satisfy a 2categorical abstraction of parametricity for strictly covariant functors. Inductive and coinductive datatypes are compatible with these combinators a ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
A 2categorical notion of parametric combinator is introduced. These combinators are operations for constructing arrows in a category and satisfy a 2categorical abstraction of parametricity for strictly covariant functors. Inductive and coinductive 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 2categorical datatypes. Stong combinators (which are an appropriate specialization of 2categorical 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 2cate...
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 longlasting 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. . . : SecondOrder LambdaCalculus with Subtyping
, 1994
"... F was an extension of a secondorder calculus F which has parametric polymorphism with subtyping and bounded quantification, introduced by Ghelli to apply secondorder calculi to the framework of objectoriented languages. However, it is impossible to know the amount of information of a typeche ..."
Abstract
 Add to MetaCart
F was an extension of a secondorder calculus F which has parametric polymorphism with subtyping and bounded quantification, introduced by Ghelli to apply secondorder calculi to the framework of objectoriented languages. However, it is impossible to know the amount of information of a typechecked 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 prooftheoretic 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 nonparametric 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 longlasting 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