Home
Publications
Software
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
Generic Views On Data Types
Alexey
<!-- * Set PREV_SKIN = customtitle * Set CUSTOMTOPICTITLE = Generic Views on data types * Set CUSTOMHEADTITLE = Generic Views on data types * Set WEBTITLE = --> _Stefan Holdermans, Johan Jeuring, Andres Löh and Alexey Rodriguez. At the [[http://cs.ioc.ee/mpc-amast06/mpc/][8th International Conference on Mathematics of Program Construction 2006]]_ A generic function is defined by induction on the structure of types. The structure of a data type can be defined in several ways. For example, in !PolyP a pattern functor gives the structure of a data type viewed as a fixed point, and in Generic Haskell a structural representation type gives an isomorphic type view of a data type in terms of sums of products. Depending on this generic view on the structure of data types, some generic functions are easier, more difficult, or even impossible to define. Furthermore, the efficiency of some generic functions can be improved by choosing a different view. This paper introduces generic views on data types and shows why they are useful. Furthermore, it shows how generic views have been added to Generic Haskell, an extension of the functional programming language Haskell that supports the construction of generic functions. The separation between inductive definitions on type structure and generic views allows us to combine many approaches to generic programming in a single framework. *Paper:* ([[%ATTACHURL%/ViewsMPC.pdf][pdf]]) *Technical report: (extended paper version)* ([[http://www.cs.uu.nl/research/techreps/UU-CS-2006-020.html][url]]) ---+++ Implementation You can obtain an implementation of Generic Views from [[Generic Views Implementation][this page]]. -- Main.AlexeyRodriguez - 02 Aug 2006