Welcome to Just Haskell, a blog on the Haskell programming language.
What’s in a Name?
The name of the blog is a play on several things, but now would be an appropriate time to talk about beginnings and the beginnings of the Haskell language. The most important innovation of Haskell is its monadic I/O system. It wasn’t there at the start, but invented and added subsequently (in 1996) after Philip Wadler’s early nineties papers sparked the revolution. In his ’92 POPL paper Wadler mentioned (among others) Michael Spivey’s work on monadic exception handling with the Maybe type as an important precursor. Thus I justify the cheeky name of my blog — a tribute to innovation that Haskell and its tools were intended to encourage.
While we are on beginnings I would like to acknowledge two personal pre-Haskell influences. I came to Haskell and functional programming through the Miranda programming language, David Turner’s 1986 Sigplan notices paper being especially influential. This compactness and elegance was on a different plane from anything else I had encountered. I still like to write out the definition of the prime numbers from time to time (in Haskell of course):
primes :: [Integer] primes = sieve [2..] where sieve (p:xs) = p : sieve [ x | x<-xs, x `mod` p /= 0 ]
This has got to be one for the book.
For me the key innovation of Monadic I/O was to apply type abstraction to the data structures (streams and continuations) in such a way that made functional programs performing I/O composable. Simon Thompson’s 1987 report Interactive functional programs: a method and a formal semantics was the first place I encountered this idea and why it was so important. When the Monads papers started emerging it seemed like a very good thing indeed.
Enough already. Time to blog.