Marginal: the Whitespace Interpreter

Posted on July 20, 2019

Marginal is a Whitespace language interpreter implemented in Haskell. For those unfamiliar with it, Whitespace is an esoteric programming language that only uses the tokens " ", "\t", and "\n". This project is just an excuse to refresh on same lexing & parsing basics, as well as playing with some interesting Haskell features.

Marginal is largely implemented as a library, with a thin CLI wrapper around it. At the time of writing Marginal contains 2 parser implementatons (one using just Alex, and the other using a more appropriate Alex and Happy combination), and a single strict VM implementation. Assuming my own interest remains I plan on adding another parser implementation, probably with Megaparsec, as well as a debugger implementation for the strict VM implementation and implementations that use the default lazy evaluation strategy (but not making whitespace itself lazy).