Defining functions over large, possibly recursive, data structures usually involves a lot of boilerplate. This code simply traverses non-interesting parts of the data, and rapidly becomes a maintainability problem. Many generic programming libraries have been proposed to address this issue. Most of them allow the user to specify the behavior just for the interesting bits of the structure, and provide traversal combinators to “scrap the boilerplate”. The expressive power of these libraries usually comes at the cost of efficiency, since runtime checks are used to detect where to apply the type-specific behavior. In previous work we have developed an effective rewrite system for specialization and optimization of generic programs. In this pape...
The Generic Haskell programming language allows functions to be defined by induction on the structur...
Previous implementations of generic rewriting libraries have a number of limitations: they require t...
In this paper, we describe two techniques for the efficient, modularized implementation of a large c...
AbstractDefining functions over large, possibly recursive, data structures usually involves a lot of...
Datatype-generic programs are programs that are parametrized by a datatype or type functor: whereas ...
textabstractWe describe a design pattern for writing programs that traverse data structures built fr...
This thesis aims at making Datatype Generic Programming more useful in practice. We extend the fixed...
Datatype-generic programs are programs that are parametrized by a datatype or type functor: whereas ...
The paper "Scrap your boilerplate" (SYB) introduces a combinator library for generic programming tha...
This paper describes a new approach to generic functional programming, which allows us to define fun...
The ‘Scrap your boilerplate ’ approach to generic programming allows the programmer to write generic...
This paper describes structural polymorphism, a new form of type polymorphism appropriate to functio...
Abstract. The paper “Scrap your boilerplate ” (SYB) introduces a com-binator library for generic pro...
A generic function is defined by induction on the structure of types. The structure of a data type ...
AbstractConstrained genericity is an extension of parametric polymorphism, that allows type paramete...
The Generic Haskell programming language allows functions to be defined by induction on the structur...
Previous implementations of generic rewriting libraries have a number of limitations: they require t...
In this paper, we describe two techniques for the efficient, modularized implementation of a large c...
AbstractDefining functions over large, possibly recursive, data structures usually involves a lot of...
Datatype-generic programs are programs that are parametrized by a datatype or type functor: whereas ...
textabstractWe describe a design pattern for writing programs that traverse data structures built fr...
This thesis aims at making Datatype Generic Programming more useful in practice. We extend the fixed...
Datatype-generic programs are programs that are parametrized by a datatype or type functor: whereas ...
The paper "Scrap your boilerplate" (SYB) introduces a combinator library for generic programming tha...
This paper describes a new approach to generic functional programming, which allows us to define fun...
The ‘Scrap your boilerplate ’ approach to generic programming allows the programmer to write generic...
This paper describes structural polymorphism, a new form of type polymorphism appropriate to functio...
Abstract. The paper “Scrap your boilerplate ” (SYB) introduces a com-binator library for generic pro...
A generic function is defined by induction on the structure of types. The structure of a data type ...
AbstractConstrained genericity is an extension of parametric polymorphism, that allows type paramete...
The Generic Haskell programming language allows functions to be defined by induction on the structur...
Previous implementations of generic rewriting libraries have a number of limitations: they require t...
In this paper, we describe two techniques for the efficient, modularized implementation of a large c...