guard
This package provides rewriting functionality for datatypes. Most forms of datatypes are supported, including parametrized and mutually-recursive.
This library has been described in the paper:
* Thomas van Noort, Alexey Rodriguez Yakushev, Stefan Holdermans, Johan Jeuring, Bastiaan Heeren, Jose Pedro Magalhaes. A Lightweight Approach to Datatype-Generic Rewriting. Journal of Functional Programming, Special Issue on Generic Programming, 2010.
More information about this library can be found at http://www.cs.uu.nl/wiki/GenericProgramming/GuardedRewriting.
Version 0.1
> f p { | e1 = e2 | e3 = e4 }
A guarded alternative | exp -> exp. The first expression will be Boolean-valued.
gdpat
A guarded right hand side | exp = exp. The first expression will be Boolean-valued.
guarded right hand side (gdrhs)
-> exp
unguarded right hand side (exp)