PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Generic unification via two-level types and parameterized modules
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Language Prototyping: An Algebraic Specification Approach: Vol. V
Language Prototyping: An Algebraic Specification Approach: Vol. V
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Typed Combinators for Generic Traversal
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
Journal of Functional Programming
Journal of Functional Programming
Science of Computer Programming - Special issue on mathematics of program construction (MPC 2002)
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
TypeCase: a design pattern for type-indexed functions
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
A pattern for almost compositional functions
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Stream fusion: from lists to streams to nothing at all
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Uniform boilerplate and list processing
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Polytypic programming in haskell
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
Improved fusion for optimizing generics
PADL'05 Proceedings of the 7th international conference on Practical Aspects of Declarative Languages
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
Canonical Forms in Interactive Exercise Assistants
Calculemus '09/MKM '09 Proceedings of the 16th Symposium, 8th International Conference. Held as Part of CICM '09 on Intelligent Computer Mathematics
Generic programming with fixed points for mutually recursive datatypes
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
Generic selections of subexpressions
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
A generic deriving mechanism for Haskell
Proceedings of the third ACM Haskell symposium on Haskell
A lightweight approach to datatype-generic rewriting
Journal of Functional Programming
Pull-ups, push-downs, and passing it around
IFL'09 Proceedings of the 21st international conference on Implementation and application of functional languages
Generic programming with indexed functors
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
Generic programming for indexed datatypes
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
The right kind of generic programming
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Template your boilerplate: using template haskell for efficient generic programming
Proceedings of the 2012 Haskell Symposium
Generic representations of tree transformations
Proceedings of the 9th ACM SIGPLAN workshop on Generic programming
Hi-index | 0.00 |
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.