• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

Generic programs and proofs (0)

by Ralf Hinze
Add To MetaCart

Tools

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

Dependency-style Generic Haskell

by Andres Löh, Dave Clarke, Johan Jeuring , 2003
"... Generic Haskell is an extension of Haskell that supports the construction of generic programs. During the development of several applications, such as an XML editor and compressor, we encountered a number of limitations with the existing (Classic) Generic Haskell language, as implemented by the c ..."
Abstract - Cited by 67 (22 self) - Add to MetaCart
Generic Haskell is an extension of Haskell that supports the construction of generic programs. During the development of several applications, such as an XML editor and compressor, we encountered a number of limitations with the existing (Classic) Generic Haskell language, as implemented by the current Generic Haskell compiler. Specifically,

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, patt ..."
Abstract - Cited by 53 (19 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.

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 45 (7 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.

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 28 (15 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.

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 12 (7 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.

A Lightweight Approach to Datatype-Generic Rewriting

by Thomas Van Noort, Alexey Rodriguez, Stefan Holdermans, Johan Jeuring, Bastiaan Heeren, Thomas Noort, Alexey Rodriguez, Stefan Holdermans, Johan Jeuring, Bastiaan Heeren , 2008
"... ..."
Abstract - Cited by 11 (8 self) - Add to MetaCart
Abstract not found

Comparing approaches to generic programming in Haskell

by Ralf Hinze, Johan Jeuring, Andres Löh - ICS, Utrecht University , 2006
"... Abstract. The last decade has seen a number of approaches to datatype-generic programming: PolyP, Functorial ML, ‘Scrap Your Boilerplate’, Generic Haskell, ‘Generics for the Masses’, etc. The approaches vary in sophistication and target audience: some propose full-blown programming languages, some s ..."
Abstract - Cited by 10 (3 self) - Add to MetaCart
Abstract. The last decade has seen a number of approaches to datatype-generic programming: PolyP, Functorial ML, ‘Scrap Your Boilerplate’, Generic Haskell, ‘Generics for the Masses’, etc. The approaches vary in sophistication and target audience: some propose full-blown programming languages, some suggest libraries, some can be seen as categorical programming methods. In these lecture notes we compare the various approaches to datatype-generic programming in Haskell. We introduce each approach by means of example, and we evaluate it along different dimensions (expressivity, ease of use, etc). 1

The Generic Haskell User's Guide - Version 1.42 - Coral release

by Andres Löh, Johan Jeuring, Andres Löh (editor, Johan Jeuring (editor, Dave Clarke, Jan de Wit, Ralf Hinze, Alexey Rodriguez, Skell Team, Andres Löh (editor, Johan Jeuring (editor, Dave Clarke, Ralf Hinze, Alexey Rodriguez , 2005
"... Contents SKELL? 5 1.1 Generic programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 SKELL overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Installation 6 2.1 System requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Insta ..."
Abstract - Cited by 8 (6 self) - Add to MetaCart
Contents SKELL? 5 1.1 Generic programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 SKELL overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Installation 6 2.1 System requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Installing the binary distribution (Linux, Mac OS X) . . . . . . . . . . . . . . 6 2.3 Installing the binary distribution (Windows) . . . . . . . . . . . . . . . . . . . 7 2.4 Building from source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5 Running gh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.6 Command line flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.7 General overview of compilation . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.8 Compiling and running the generated code . . . . . . . . . . . . . . . . . . . 9 SKELL: The Language 10 3.1 Special Parentheses . . . . . . . . . . . . . . . . . . . .

Optimizing Generic Functions

by Artem Alimarine, Sjaak Smetsers - MATHEMATICS OF PROGRAM CONSTRUCTION, VOLUME 3125 OF LNCS , 2004
"... Generic functions are defined by induction on the structural representation of types. As a consequence, by defining just a single generic operation, one acquires this operation over any particular type. An instance on a specific type is generated by interpretation of the type's structure. A dire ..."
Abstract - Cited by 7 (0 self) - Add to MetaCart
Generic functions are defined by induction on the structural representation of types. As a consequence, by defining just a single generic operation, one acquires this operation over any particular type. An instance on a specific type is generated by interpretation of the type's structure. A direct translation leads to extremely ine#cient code that involves many conversions between types and their structural representations. In this

Improved fusion for optimizing generics

by Artem Alimarine, Sjaak Smetsers - Proceedings of Seventh International Symposium on Practical Aspects of Declarative Languages. Number 3350 in LNCS , 2005
"... Abstract. Generic programming is accepted by the functional programming community as a valuable tool for program development. Several functional languages have adopted the generic scheme of type-indexed values. This scheme works by specialization of a generic function to a concrete type. However, th ..."
Abstract - Cited by 4 (1 self) - Add to MetaCart
Abstract. Generic programming is accepted by the functional programming community as a valuable tool for program development. Several functional languages have adopted the generic scheme of type-indexed values. This scheme works by specialization of a generic function to a concrete type. However, the generated code is extremely inefficient compared to its hand-written counterpart. The performance penalty is so big that the practical usefulness of generic programming is compromised. In this paper we present an optimization algorithm that is able to completely eliminate the overhead introduced by the specialization scheme for a large class of generic functions. The presented technique is based on consumer–producer elimination as exploited by fusion, a standard general purpose optimization method. We show that our algorithm is able to optimize many practical examples of generic functions.
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

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

© 2007-2010 The Pennsylvania State University