• Documents
  • Authors
  • Tables
  • Log in
  • Sign up
  • MetaCart
  • DMCA
  • Donate

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations

The Derivative of a Regular Type is its Type of One-Hole Contexts. Available at http://www.dur.ac.uk/c.t.mcbride/diff.ps, (2001)

by Conor McBride
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 42
Next 10 →

The differential lambda-calculus

by Thomas Ehrhard, Laurent Regnier , 2003
"... We present an extension of the lambda-calculus with differential constructions. We state and prove some basic results (confluence, strong normalization in the typed case), and also a theorem relating the usual Taylor series of analysis to the linear head reduction of lambda-calculus. ..."
Abstract - Cited by 70 (11 self) - Add to MetaCart
We present an extension of the lambda-calculus with differential constructions. We state and prove some basic results (confluence, strong normalization in the typed case), and also a theorem relating the usual Taylor series of analysis to the linear head reduction of lambda-calculus.

Generic programming within dependently typed programming

by Thorsten Altenkirch, Conor Mcbride - In Generic Programming, 2003. Proceedings of the IFIP TC2 Working Conference on Generic Programming, Schloss Dagstuhl , 2003
"... Abstract We show how higher kinded generic programming can be represented faithfully within a dependently typed programming system. This development has been implemented using the Oleg system. The present work can be seen as evidence for our thesis that extensions of type systems can be done by prog ..."
Abstract - Cited by 66 (8 self) - Add to MetaCart
Abstract We show how higher kinded generic programming can be represented faithfully within a dependently typed programming system. This development has been implemented using the Oleg system. The present work can be seen as evidence for our thesis that extensions of type systems can be done by programming within a dependently typed language, using data as codes for types. 1.
(Show Context)

Citation Context

...ld have used positive, strictly positive or just finite types as introduced before. We include datatypes of higher kinds and nested datatypes, generalizing the construction for regular types given in =-=[McB01a]-=-. We present a generic recursion operator, fold, (section 2.3) which gives one way to define generic functions such as == or map for arbitrary kinds. In section 3 we present more details of our encodi...

Type-Indexed Data Types

by Ralf Hinze, Johan Jeuring, Andres Löh - SCIENCE OF COMPUTER PROGRAMMING , 2004
"... A polytypic function is a function that can be instantiated on many data types to obtain data type specific functionality. Examples of polytypic functions are the functions that can be derived in Haskell, such as show , read , and ` '. More advanced examples are functions for digital searching, ..."
Abstract - Cited by 62 (23 self) - Add to MetaCart
A polytypic function is a function that can be instantiated on many data types to obtain data type specific functionality. Examples of polytypic functions are the functions that can be derived in Haskell, such as show , read , and ` '. More advanced examples are functions for digital searching, pattern matching, unification, rewriting, and structure editing. For each of these problems, we not only have to define polytypic functionality, but also a type-indexed data type: a data type that is constructed in a generic way from an argument data type. For example, in the case of digital searching we have to define a search tree type by induction on the structure of the type of search keys. This paper shows how to define type-indexed data types, discusses several examples of type-indexed data types, and shows how to specialize type-indexed data types. The approach has been implemented in Generic Haskell, a generic programming extension of the functional language Haskell.

Categories of Containers

by Michael Gordon Abbott , 2003
"... ..."
Abstract - Cited by 52 (7 self) - Add to MetaCart
Abstract not found

Faking It: Simulating Dependent Types in Haskell

by Connor McBride , 2001
"... Dependent types reflect the fact that validity of data is often a relative notion by allowing prior data to affect the types of subsequent data. Not only does this make for a precise type system, but also a highly generic one: both the type and the program for each instance of a family of operations ..."
Abstract - Cited by 37 (6 self) - Add to MetaCart
Dependent types reflect the fact that validity of data is often a relative notion by allowing prior data to affect the types of subsequent data. Not only does this make for a precise type system, but also a highly generic one: both the type and the program for each instance of a family of operations can be computed from the data which codes for that instance. Recent experimental extensions to the Haskell type class mechanism give us strong tools to relativize types to other types. We may simulate some aspects of dependent typing by making counterfeit type-level copies of data, with type constructors simulating data constructors and type classes simulating datatypes. This paper gives examples of the technique and discusses its potential. 1

Indexed Containers

by Thorsten Altenkirch, Neil Ghani, Peter Hancock, Conor Mcbride, Peter Morris
"... Abstract. The search for an expressive calculus of datatypes in which canonical algorithms can be easily written and proven correct has proved to be an enduring challenge to the theoretical computer science community. Approaches such as polynomial types, strictly positive types and inductive types h ..."
Abstract - Cited by 36 (5 self) - Add to MetaCart
Abstract. The search for an expressive calculus of datatypes in which canonical algorithms can be easily written and proven correct has proved to be an enduring challenge to the theoretical computer science community. Approaches such as polynomial types, strictly positive types and inductive types have all met with some success but they tend not to cover important examples such as types with variable binding, types with constraints, nested types, dependent types etc. In order to compute with such types, we generalise from the traditional treatment of types as free standing entities to families of types which have some form of indexing. The hallmark of such indexed types is that one must usually compute not with an individual type in the family, but rather with the whole family simultaneously. We implement this simple idea by generalising our previous work on containers to what we call indexed containers and show that they cover a number of sophisticated datatypes and, indeed, other computationally interesting structures such as the refinement calculus and interaction structures. Finally, and rather surprisingly, the extra structure inherent in indexed containers simplifies the theory of containers and thereby allows for a much richer and more expressive calculus. 1
(Show Context)

Citation Context

...ators. However, it does not cover the question which inductive types actually exist, and it falls short of providing a systematic characterisation of generic operations such as equality or the zipper =-=[24, 28]-=-. To address this problem, we proposed in previous work to consider only a certain class of functors, namely those arising from containers [2, 1]. Since indexed containers build upon containers, we re...

Generic programming with fixed points for mutually

by Alexey Rodriguez, Stefan Holdermans, Andres Löh, Johan Jeuring , 2008
"... ..."
Abstract - Cited by 33 (11 self) - Add to MetaCart
Abstract not found
(Show Context)

Citation Context

... (Jansson and Jeuring 2000), functions for selecting subexpressions (Steenbergen et al. 2008), pattern matching (Jeuring 1995), design patterns (Gibbons 2006), the Zipper and its variants (Huet 1997; =-=McBride 2001-=-; Hinze et al. 2004; Morris et al. 2006; McBride 2008), etc. The recursive structure of datatypes also plays an important role when transforming programs or proving properties about programs, such as ...

Generic Haskell: applications

by Ralf Hinze, Johan Jeuring - In Generic Programming, Advanced Lectures, volume 2793 of LNCS , 2003
"... Generic Haskell is an extension of Haskell that supports the construction of generic programs. These lecture notes discuss three advanced generic programming applications: generic dictionaries, compressing XML documents, and the zipper: a data structure used to represent a tree together with a s ..."
Abstract - Cited by 32 (17 self) - Add to MetaCart
Generic Haskell is an extension of Haskell that supports the construction of generic programs. These lecture notes discuss three advanced generic programming applications: generic dictionaries, compressing XML documents, and the zipper: a data structure used to represent a tree together with a subtree that is the focus of attention, where that focus may move left, right, up or down the tree. When describing and implementing these examples, we will encounter some advanced features of Generic Haskell, such as type-indexed data types, dependencies between and generic abstractions of generic functions, adjusting a generic function using a default case, and generic functions with a special case for a particular constructor.
(Show Context)

Citation Context

...exed data type Ctx. The type-indexed data type Ctx is defined by induction on the pattern functor of the original data type. It can be seen as the derivative (as in calculus) of the pattern functor f =-=[39, 1]. If the derivative-=- of f is denoted by f ′ , we have const ′ = 0 (f + g) ′ = f ′ + g ′ (f × g) ′ = f ′ × g + f × g ′ . It follows that in the definition of Ctx we will also need access to the type arg...

Comparing Libraries for Generic Programming in Haskell

by Alexey Rodriguez, Johan Jeuring, Patrik Jansson, Alex Gerdes, Oleg Kiselyov, Bruno C. d. S. Oliveira , 2008
"... Datatype-generic programming is defining functions that depend on the structure, or “shape”, of datatypes. It has been around for more than 10 years, and a lot of progress has been made, in particular in the lazy functional programming language Haskell. There are more than 10 proposals for generic p ..."
Abstract - Cited by 25 (10 self) - Add to MetaCart
Datatype-generic programming is defining functions that depend on the structure, or “shape”, of datatypes. It has been around for more than 10 years, and a lot of progress has been made, in particular in the lazy functional programming language Haskell. There are more than 10 proposals for generic programming libraries or language extensions for Haskell. To compare and characterize the many generic programming libraries in a typed functional language, we introduce a set of criteria and develop a generic programming benchmark: a set of characteristic examples testing various facets of datatype-generic programming. We have implemented the benchmark for nine existing Haskell generic programming libraries and present the evaluation of the libraries. The comparison is useful for reaching a common standard for generic programming, but also for a programmer who has to choose a particular approach for datatype-generic programming.

Exploring the regular tree types

by Peter Morris, Thorsten Altenkirch, Conor Mcbride - In Types for Proofs and Programs , 2004
"... Abstract. In this paper we use the Epigram language to define the universe of regular tree types—closed under empty, unit, sum, product and least fixpoint. We then present a generic decision procedure for Epigram’s in-built equality at each type, taking a complementary approach to that of Benke, Dyb ..."
Abstract - Cited by 23 (4 self) - Add to MetaCart
Abstract. In this paper we use the Epigram language to define the universe of regular tree types—closed under empty, unit, sum, product and least fixpoint. We then present a generic decision procedure for Epigram’s in-built equality at each type, taking a complementary approach to that of Benke, Dybjer and Jansson [7]. We also give a generic definition of map, taking our inspiration from Jansson and Jeuring [21]. Finally, we equip the regular universe with the partial derivative which can be interpreted functionally as Huet’s notion of ‘zipper’, as suggested by McBride in [27] and implemented (without the fixpoint case) in Generic Haskell by Hinze, Jeuring and Löh [18]. We aim to show through these examples that generic programming can be ordinary programming in a dependently typed language. 1
(Show Context)

Citation Context

...ration from Jansson and Jeuring [21]. Finally, we equip the regular universe with the partial derivative which can be interpreted functionally as Huet’s notion of ‘zipper’, as suggested by McBride in =-=[27]-=- and implemented (without the fixpoint case) in Generic Haskell by Hinze, Jeuring and Löh [18]. We aim to show through these examples that generic programming can be ordinary programming in a dependen...

Powered by: Apache Solr
  • About CiteSeerX
  • Submit and Index Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2019 The Pennsylvania State University