Neil Mitchell | 8 Jul 13:31

ANN: Uniplate 1.2

I am pleased to announce Uniplate 1.2, available from Hackage:

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uniplate

Description
===========

Uniplate is a library for reducing boilerplate code, by performing
generic traversals. For example, given a data type with a Uniplate
instance:

data Expr = Var String | Add String String | Mul String String | ...

instance Uniplate Expr where ...

We can write a function to get all the variables in an Expr as:

vars x = [v | Var v <- universe x]

Additionally, Uniplate can work with the built-in deriving
Data/Typeable support in GHC to eliminate the need for writing
Uniplate instances. The library is described in Chapter 3 of my thesis
(http://www-users.cs.york.ac.uk/~ndm/thesis/), complete with simple
examples for most functions.

Most Haskell users working with a moderately complex data type, such
as an abstract syntax tree, should be using some form of boilerplate
removal. Uniplate is used in projects such as Yhc, Hoogle, Reach,
Reduceron, Catch, Supero and many others.

(Continue reading)


Gmane