A MiniJava compiler written in Haskell