The Kansas University Rewrite Engine (KURE) is a Haskell-hosted Domain-Specific Language (DSL) for writing transformation systems based on rewrite strategies. When writing transformation systems, a significant amount of engineering effort goes into setting up the infrastructure to direct queries and rewrites to the desired points in the structure. Strategic programming languages provide most of this infrastructure, allowing the user to focus on the rewrites rules. KURE is a strongly typed strategy control language in the tradition of Stratego and StrategyLib. Its aim is to provide a simple interface for writing reasonably efficient rewrite systems while supporting complex traversal strategies.
An earlier version of KURE was used (along with Template Haskell) to provide the basic rewrite abilities inside HERA (the precursor to HERMIT). It was rewritten once in late 2008, again in 2012, and the interface was revised in 2013. The 2013 version is being used as the underlying rewrite engine by HERMIT. The latest versions are all available on Hackage.
N. Sculthorpe, N. Frisby, and A. Gill, “The Kansas University Rewrite Engine: A Haskell-embedded strategic programming language with custom closed universes,” Journal of Functional Programming, 2014.
A. Farmer, A. Gill, E. Komp, and N. Sculthorpe, “The HERMIT in the machine: A plugin for the interactive transformation of GHC core language programs,” in Proceedings of the ACM SIGPLAN Haskell Symposium, ser. Haskell ’12. ACM, 2012, pp. 1–12.
A. Gill, “A Haskell hosted DSL for writing transformation systems,” in Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages, ser. DSL ’09. Springer-Verlag, July 2009, pp. 285–309.