- lazy evaluation
- type inference
- ridiculous amounts of programmer tools (it *derives* type classes for you!!!)
- lots of experimental ideas that are in the compiler but that people don't really use (it's a research tool after all).
I think there is something to be said for the idea of writing a similar language which has a less monolithic set of tools (although, to be fair, I have not look at the architecture of GHC at all, so maybe it is really beautiful under the hood). The point is that I don't think that you can necessarily equate the simplicity of expression with the complexity of the tools.