Datatype-Generic Programming: International Spring School, SSDGP 2006, Nottingham, UK, April 24-27, 2006, Revised LecturesRoland Backhouse, Jeremy Gibbons, Ralf Hinze, Johan Jeuring A leitmotif in the evolution of programming paradigms has been the level and extent of parametrisation that is facilitated — the so-called genericity of the paradigm. The sorts of parameters that can be envisaged in a programming language range from simple values, like integers and ?oating-point numbers, through structured values, types and classes, to kinds (the type of types and/or classes).Datatype-generic programming is about parametrising programsby the structure of the data that they manipulate. Toappreciatethe importanceofdatatypegenericity,oneneedlooknofurther than the internet. The internet is a massive repository of structured data, but the structure is rarely exploited. For example, compression of data can be much more e?ective if its structure is known, but most compression algorithms regard the input data as simply a string of bits, and take no account of its internal organisation. Datatype-genericprogrammingisaboutexploitingthestructureofdatawhen it is relevant and ignoring it when it is not. Programming languages most c- monly used at the present time do not provide e?ective mechanisms for do- menting and implementing datatype genericity. This volume is a contribution towards improving the state of the art. The emergence of datatype genericity can be traced back to the late 1980s. |
Contents
1 | |
Comparing Approaches to Generic Programming in Haskell | 72 |
Generic Programming Now | 150 |
Generic Programming with Dependent Types | 209 |
Generic Programming in Ωmega | 258 |
Revealing the XO Impedance Mismatch | 285 |
368 | |
Other editions - View all
Common terms and phrases
abstract algebraic datatypes apply approach Bifunctors binary binary trees Bool Btree Char Cons construction content models data constructor data structure data type datatype Datatype-Generic Programming decodes define definition dependent types derived Elcf element declarations element names encode example Expr Int fmap foldL Functional Programming functors GADTs Haskell’s Heidelberg higher-order Hinze idiom Impedance Mismatch implementation instance integers Iterator Jeuring kind-indexed List LNCS Löh monadic nested newtype Node object model object types operator option Pair parametric polymorphism parametrized pattern polymorphic PolyP polytypic pretty programming language public class recursive representation type Section Springer String Template Haskell toSpine traverse Tree Int type arguments type classes type constructor type representation type signature type system type Type type-indexed types of kind X-to-O mapping XML schema xs:complexType xs:element xs:sequence Zero