Quick links to other interesting bits (also accessible from the "Jump to" link on that page):
The Lexer, which has some extra smarts to help keep the grammar cleaner than it otherwise would be:
The implementation of lexical scope:
The "coffee" command-line utility:
All of those pages are created by a little literate-programming-style documentation generator called "Docco". If you run it on itself, you get this:
Hopefully we'll get some good patches from having the source in the open like this.
Also, this isn't 0.5.5? Waiting for interpolation to settle?
* I'll put out my vim stuff when I write the indent script.
Now, every time that you run "bin/cake build", you re-write your entire compiler.
It's pretty fun stuff -- if you're working on the language and you break something, guess what, you no longer have a working compiler to dig yourself out with.
So the usual pattern for language work (bin/cake build:full), is to check out the "lib" directory (in case you broke it), rebuild the compiler twice, to get your modifications built-in, and then to run all of the tests.
Haskell has dynamic typing via the Data.Dynamic module, but I don't find it to be useful. I can't think of any reason why anyone would want dynamic typing, anyway. Eventually you need to know the type of your data, why not figure that out before you start the program running? (But if you disagree, Haskell is not going to stop you.)
Strict evaluation is a pain, though, IMHO.
[edit: more generally, what is the point of this conversation? You've stated that you don't understand how anyone could want dynamic types, and that strict evaluation is a pain. It's pretty obvious that you want completely different things to me. Given that, are you really trying to help me here, or just being a bit of an asshole? You're welcome to disagree, but simply repeating your opinions as if they are somehow more valid than mine isn't helping anyone.]
Er, this one is, but...