Haskell Code

Data Parallel Haskell: a high-performance extension to GHC

The Data Parallel Haskell project is about adding support for nested data paralellism to the Glasgow Haskell Compiler (GHC). Nested data parallelism enables a high-level description of a wide range of parallel algorithms, while supporting a language-based cost model. It is also a rather portable form of parallelism, although our current focus for Data Parallel Haskell is SMP hardware, and especially, multi-core processors.

Data.Array.Accelerate: accelerated array processing in Haskell

Data.Array.Accelerate is a Haskell library that provides an embedded language of collective operations on regular, multidimensional arrays. It is currently under active development with the aim of providing online compilation of the embedded array language to a variety of high-performance architectures, such as programmable GPUs.

C->Haskell: Haskell bindings to C libraries made easy

C->Haskell is an interface generator for Haskell bindings to C libraries. Most of the Gtk+HS binding is generated using C->Haskell.

λFeed: Generate your own news feeds, blog feeds, podcasts, etc.

λFeed generates RSS 2.0 feeds and corresponding HTML from a non-XML, human-friendly format for channels and news items. The tool is in an early development phase and very hackable.

VersionTool: Integrate version information into program sources

VersionTool extracts version information from a .cabal file and from darcs, and then, inserts it into a source file. A tiny tool that you can add easily add to your project.

Gtk+HS: A library for powerful GUIs in Haskell

This project is no longer under active development. Together with a some other Haskell hackers, I am currently developing a GTK+ Binding for Haskell. It is already usable for GUIs of medium complexity and also features support for OpenGL via Sven Panne's HOpenGL and GtkGLArea as well as a binding to a widget embedding the rendering engine of the Mozilla web browser and libglade. There an experimental wrapper for functional GUI programming in the GTK+ binding now: iHaskell. It is based on the Haskell Ports Library, a new abstraction for modelling time-dependent variables in Haskell.

IDoc: Generating interface documentation for your Haskell libraries

This project is no longer under active development. Haskell mixes interface and implementation of a module in a single file, so that it is is difficult to pass the interface to a library user without exposing them to the implementation, too. (This is not about preventing access to the implementation, but about maintaining abstraction barriers between loosely-coupled parts of large software systems.)

IDoc is a simple and easy-to-use tool that, for the price of following a couple of simple and non-obstructive conventions, generates interface documentation from Haskell modules, rendering them in markup languages like HTML.


Together with Gabriele Keller, I wrote a (non-optimized) two-dimensional n-body code based on the Barnes-Hut algorithm. It is meant as a reference implementation - we wrote it to debug a parallel implementation of the algorithm. For more details have a look at the Dagstuhl Barnes-Hut page.

Functional languages are very well suited for implementing compilers. The Compiler Toolkit (CTK) provides some core functionality needed in any kind of compiler, like symbol table management, input-output operations, error management. Furthermore, there are now self-optimizing scanner and parser libraries. The latter can be obtained and used stand alone in the Compiler Toolkit Light (CTKlight).

Here are two modules from the toolkit that are useful outside the compiler context:

  • A pretty-printing library based on John Hughes ideas.
  • An implementation of finite maps and sets based on ideas from an article by Stephan Adams, which was published in the Journal of Functional Programming (the set module needs the finite maps module).

All code is covered by the GPL (or LGPL): use it, share it, hack it!

Related to Haskell hacking is the Glasgow Haskell Compiler Commentary. It's aim is to explain the magic behind the Glasgow Haskell Compiler - and, believe me, there is a lot of magic in it. I started the commentary only recently, so the material is still very limited.

Moreover, I am the editor of the Haskell 98 Foreign Function Interface Addendum, a proposal for a standardised foreign function interface for Haskell.

LaTeX Packages

The haskell package provides support for setting Haskell code. It basically defines a variant of math mode, where multi-letter identifiers are set properly, white space matters, and alignment is made easy.

The grammar style provides macros for setting EBNF in the layout used in the Haskell report.

The class file chaksem builds on the seminar style and is meant to support the use of LaTeX for (online) presentations.


I wrote a guide to installing GNU/Linux on the Fujitsu S6130 and P5020 entitled "Liberating the Fujitsu S6130 & P5020, or Centrino in the Free World". A while ago, I wrote a similar document for the Dell Latitude C400 notebook under the title "Liberating the Dell Latitude C400", but it is probably not of much value anymore.

• Copyright 2005 Manuel M T Chakravarty • Last modified: Thu Jun 8 16:45:35 EDT 2006