by Chris Pressey, Cat's Eye Technologies

This is an implementation of the programming language PL-{GOTO}. It is a compiler, written in Haskell that generates MSIL. It is distributed in the PL-{GOTO}.NET distribution and it is in the Public Domain.

PL-{GOTO}.NET is a compiler for the language PL-{GOTO} from Brainerd and Landweber's Theory of Computation. PL-{GOTO} can express exactly the primitive recursive functions, and thus PL-{GOTO} programs always terminate. PL-{GOTO}.NET generates MSIL code which can then (using ilasm) be turned into a .NET executable. It can also execute PL-{GOTO} programs directly.


To run this implementation, you need:

  • to build it first, for which you will need:
  • an implementation of Haskell (we suggest ghc)


I've been idly fascinated by the primitive recursive example programming language PL-{GOTO} from Brainerd and Landweber's Theory of Computation for some time. And for some reason I will never be able to explain, I had the craving to implement a compiler which could produce .NET executables by generating MSIL assembly language. And putting those two together — well, that struck me as a respectably absurd match, so that's what I did. The compiler is written in Haskell and uses Parsec for parsing PL-{GOTO} programs; I tried to keep the grammar true to what is presented in the book, not refactoring it to be LL(1), and keeping the symbol for assignment.