A lightweight approach to datatype-generic rewriting

  • Authors:
  • Thomas van Noort;Alexey Rodriguez;Stefan Holdermans;Johan Jeuring;Bastiaan Heeren

  • Affiliations:
  • Radboud University Nijmegen, Nijmegen, Netherlands;Utrecht University, Utrecht, Netherlands;Utrecht University, Utrecht, Netherlands;Utrecht University, Utrecht, and Open University of the Netherlands, Heerlen, Netherlands;Open University of the Netherlands, Heerlen, Netherlands

  • Venue:
  • Proceedings of the ACM SIGPLAN workshop on Generic programming
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

Previous implementations of generic rewriting libraries have a number of limitations: they require the user to either adapt the datatype on which rewriting is applied, or the rewriting rules are specified as functions, which makes it hard or impossible to document, test, and analyse them. We describe a library that demonstrates how to overcome these limitations by defining rules in terms of datatypes, and show how to use a type-indexed datatype to automatically extend a datatype for syntax trees with a case for metavariables. We then show how rewrite rules can be implemented without any knowledge of how the datatype is extended with metavariables. We use Haskell, extended with associated type synonyms, to implement both type-indexed datatypes and generic functions. We analyse the performance of our library and compare it with other approaches to generic rewriting.