Projects
According to the Tolkienesque classification of people explained in Neal Stephenson’s novel Cryptonomicon, I am a dwarf: I like sitting in the dark hammering out Beautiful Things.
Click on any project to see more details.
A Haskell EDSL for producing vector graphics. This is one of the projects I am proudest of. Slowly but surely, diagrams is becoming a viable alternative to systems like MetaPost or Asymptote.
Haskell combinator library for splitting lists in various ways.
Various combinatorial algorithms over multisets, including generating all permutations, partitions, size–2 partitions, size-k subsets, and Sawada’s algorithm for generating all necklaces with elements from a multiset.
Various extras to extend the numeric-prelude package, including multivariate polynomials and factored rationals.
A Haskell EDSL for computing with combinatorial species. Includes code for counting labelled or unlabelled species and for exhaustive generation of structures described by a species.
A little package defining the fundamental circle constant tau, the ratio between any circle’s circumference and its radius.
A generic programming library for Haskell based on representation types, originally written by Stephanie Weirich. I now help maintain it and have contributed a few extensions.
Unbound is an expressive Haskell type-level EDSL for encoding many types of binding structure, along with automatic tools for working with types whose binding structure has been thus specified (alpha-equivalence, capture-avoiding substitution, free variable calculation, etc.).
Haskell interface to the Online Encyclopedia of Integer Sequences. Used as a plugin in lambdabot.
As of December 2010, the oeis package is maintained by Brian Lewis.
Ott is a tool for writing formal definitions of programming languages and calculi. Often the Ott grammars one defines end up being ambiguous, and Ott signals its displeasure by spewing forth several massive parse trees in a format requiring formidable patience to read. Finding the slight differences between two such parse trees is an exercise in seizure-inducing tedium.
To the rescue comes ottparse-pretty! Simply paste in each parse and it is shown to you in a nicely formatted tree form with all the extra meaningless cruft removed.
Haskell library for creating simple command-line-based list editors.
A simple State-like monad transformer where states can be saved to and restored from an internal stack.
A pretty-printing library for laying out text in two dimensions, using a simple box model. Other commonly used pretty-printing libraries (such as pretty) are line-oriented and cannot handle (say) placing two blocks of text next to each other.
Now maintained by Eelis van der Weegen.
I’ve made a few contributions to cabal-install, the Haskell packaging tool. Most notably, Benedikt Huber and I wrote the cabal init subcommand for initializing a Cabal package.