I've been trying to refresh my Haskell skills and Paul Callaghan recommended I read the paper "A History of Haskell: Being Lazy With Class", which I found (surprisingly?) fascinating. Three facts about Haskell that I didn't know jumped out at me:

  • The notion of Lazy Evaluation in a programming language was invented independently at least three times, but once here at Newcastle University by Peter Henderson (in collaboration with James H. Morris Jr of Xerox PARC). The paper was published as Technical Report 85 and the full text is available (albeit as an 11MB PDF of scanned pages).

  • Despite Haskell's popularity as a platform for formal computing science, the language itself is does not have formally specified semantics (or at least didn't when this paper was written, ten years ago)

  • When I was first exposed to Haskell, the worlds of functional programming and "real world" programming seemed far apart. (This perception was largely due to my own experiences, exposures and biases). In the time since, we've witnessed many FP concepts and ideas gain traction in that "real world", such as Lambda Expessions in Java 8. However, the reverse is also true, and Haskell's heirarchical module names are largely borrowed from Java's heirarchical package naming scheme.