[Haskell-cafe] Writing a compiler in Hakell

S. Doaitse Swierstra doaitse at swierstra.net
Wed May 6 10:42:52 EDT 2009

Dear Rouan,



you will find a collection of tools which may help you to construct a  
compiler. As an example you will find a Tiger compiler constructed  
with the uulib tools and the uuagc attribute grammar system. Tiger is  
the language used in the book series by Andrew Apple. Not that Tiger  
is a great language, but the compiler contains an instance of all the  
things that have to be done when writing a compiler.

Once you like these tools you may take a look at the UHC compiler,  
which actually is a series of compilers, starting from a small  
language, which is than gradually extended, both with new language  
concepts and with new aspects, such as code generation, new forms of  
types etc. Here you will also see that writing a compiler for a  
language like Haskell is not a small endeavour.

You said you wanted to write a compiler in Haskell, but you did not  
say what language you want to compile? This sounds a bit strange: I  
have chosen my tool, but now I am going to decide what to use it for?

With respect to your question about the + operator. There are many  
answers to this question; but it depends on what language you are  
compiling, with which goal in mind etc. It makes a big difference  
whether you are compiling a language like Perl into some byte-code  
language which is to be interpreted in which case your aproach looks  
reasaonable, or a special purpose language describing finite state  
machines into code for an embedded system in which case your approach  
does not work out.

  Doaitse Swierstra

On 6 mei 2009, at 08:07, Rouan van Dalen wrote:

> Hi everyone.
> I am designing my own programming language.
> I would like to know what is the best way to go about writing my  
> compiler in haskell.
> What are the tools available in haskell that can help with compiler  
> construction?
> I know about Happy.  Is that a good tool to use?
> The compiler is intended for serious use and I would like it to be  
> very efficient, maybe competing
> with compilers written in C.  It should also be very easy to extend  
> as the languoge grows.
> Are there any good books that you can recommend on compiler  
> construction in general and specific to haskell?
> On another note, how is the operator + implemented in haskell?
> is there a primitve (say #+) that is wrapped by the haskell operator  
> +?
> Maybe something like:
> (+) :: a -> a -> a
> v1 + v2 = #+ v1 v2
> Thanks in advance
> Rouan.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list