Software

This page is a list of open source software products I've contributed to in the last few years, with links to project pages or downloadable source code.

Haskell DSLs

KURE

KURE (pronounced cure) is a Haskell hosted Domain Specific Language (DSL) for writing transformation systems based on rewrite strategies. KURE is a strongly typed strategy control language in the tradition of Stratego and Strafunski. It is intended for writing reasonably efficient rewrite systems, makes use of type families to provide a delimited generic mechanism for tree rewriting, and provides support for efficient identity rewrite detection.

Webpage hackage (kure) hackage (kure-your-boilerplate)

Chalk
Board

ChalkBoard is a Haskell library for creating and processing images, as well as building small animations. The basic structure is a chalk board, a two-dimensional canvas of values, typically colors. ChalkBoard provides the usual image processing functions (masking, overlaying, function mapping, cropping, warping, rotating) as well as a few more unusual ones. Images can be imported into Chalkboard, as first-class color chalk boards. ChalkBoard also provides combinators for drawing shapes on directly on boards.

Webpage hackage (chalkboard)

Tools and Compilers

TIMBER

Timber is a general programming language specifically aimed at the construction of complex event-driven systems. It allows programs to be conveniently structured in terms of objects and reactions, and the real-time behavior of reactions can furthermore be precisely controlled via platform-independent timing constraints. This property makes Timber particularly suited to both the specification and the implementation of real-time embedded systems.

TIMBER Webpage

HPC

Haskell Program Coverage (HPC) is a high-fidelity coverage tool for Haskell, now in widespread use throughout the Haskell community. It is included with the standard GHC distribution. The link below provides support for reading and writing the HPC internal file format.

hackage (hpc)

Libraries

data-
reify

data-reify provided the ability to turn recursive structures into explicit graphs. Many (implicitly or explicitly) recursive data structure can be given this ability, via a type class instance.

Webpage hackage (data-reify)

Other Haskell Libraries

Apart from the libraries and DSLs listed above, there are also a number of smaller libraries that are released on hackage.haskell.org.

Library Description
httpd-shed A trivial web server that can be used to build Ajax and other interactive applications in Haskell.
io-reactive An API for generating reactive objects that mimic the reactive model used used in the TIMBER programming language.
marked-pretty A compatible extension to pretty that allows marking and scoping of the output document. A typical application is outputting pretty HTML with style attributes like bold and color.
dotgen A simple interface for building .dot graph files, for input into the dot and graphviz tools. It includes a monadic interface for building graphs.

Documentation Preparation Tools

OTP

Offline TeX Processing (OTP) is a mechanism to incorporate generic offline text processing into TeX and LaTeX workflows, without needing pre-processors. A typical application of OTP is smart layout and presentation of program text in LaTeX documents. It is an extension of the popular LaTeX package fancyvrb.