Hostname: page-component-89b8bd64d-7zcd7 Total loading time: 0 Render date: 2026-05-13T21:42:37.120Z Has data issue: false hasContentIssue false

The Kansas University rewrite engine

A Haskell-Embedded Strategic Programming Language with Custom Closed Universes

Published online by Cambridge University Press:  03 July 2014

NEIL SCULTHORPE
Affiliation:
Information and Telecommunication Technology Center, The University of Kansas, USA (e-mail: neil@ittc.ku.edu, nfrisby@ittc.ku.edu, andygill@ittc.ku.edu)
NICOLAS FRISBY
Affiliation:
Information and Telecommunication Technology Center, The University of Kansas, USA (e-mail: neil@ittc.ku.edu, nfrisby@ittc.ku.edu, andygill@ittc.ku.edu)
ANDY GILL
Affiliation:
Information and Telecommunication Technology Center, The University of Kansas, USA (e-mail: neil@ittc.ku.edu, nfrisby@ittc.ku.edu, andygill@ittc.ku.edu)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the 'Save PDF' action button.

When writing transformation systems, a significant amount of engineering effort goes into setting up the infrastructure needed to direct individual transformations to specific targets in the data being transformed. Strategic programming languages provide general-purpose infrastructure for this task, which the author of a transformation system can use for any algebraic data structure. The Kansas University Rewrite Engine (KURE) is a typed strategic programming language, implemented as a Haskell-embedded domain-specific language. KURE is designed to support typed transformations over typed data, and the main challenge is how to make such transformations compatible with generic traversal strategies that should operate over any type. Strategic programming in a typed setting has much in common with datatype-generic programming. Compared to other approaches to datatype-generic programming, the distinguishing feature of KURE's solution is that the user can configure the behaviour of traversals based on the location of each datum in the tree, beyond their behaviour being determined by the type of each datum. This article describes KURE's approach to assigning types to generic traversals, and the implementation of that approach. We also compare KURE, its design choices, and their consequences, with other approaches to strategic and datatype-generic programming.

Information

Type
Articles
Copyright
Copyright © Cambridge University Press 2014 
Supplementary material: File

Sculthorpe Supplementary Material

Supplementary Material

Download Sculthorpe Supplementary Material(File)
File 30.6 KB
Submit a response

Discussions

No Discussions have been published for this article.