Tonight we had a special edition of the Western Mass. Developers’ Group as Rich Hickey made the long trek north to talk to us about Clojure, his functional Lisp dialect that runs on the JVM. I enjoyed Rich’s presentation a lot. He’s clearly a very smart guy with very focused goals for the language. He breezed through the basic Clojure intro stuff to get to slides and a demo app focused specifically on concurrency issues.
I just wanted to post a quick note for anyone who is in my region and interested in functional programming that the Western Mass. Developers Group is hosting a presentation by Rich Hickey, creator of the Clojure language, on March 20th. This event was put in motion by Lou Franco, who is doing a “20 days of Clojure” series on his blog in the days running up to the event. Chas Emerick has arranged the meeting space.
Python has two seemingly similar sequence types, tuples and lists. The difference between the two that people notice right away, besides literal syntax (parentheses vs. square brackets), is that tuples are immutable and lists are mutable. Unfortunately, because this distinction is strictly enforced by the Python runtime, some other more interesting differences in application tend to get overshadowed. One common summary of these more interesting, if subtle, differences is that tuples are heterogeneous and lists are homogeneous.
Today’s notes will be a bit more free-form. Now that the tutorial days are over and the main conference has begun, there are more sessions – and less time to write! Keynotes Tim O’Reilly raised the question of openness beyond source code. This felt a bit amorphous, but he did have a good point that when software is a service, availability of source code is not the whole story – if Google gave you their source, you couldn’t do anything with it.
This is exciting – three notable personalities from the Haskell world (Bryan O’Sullivan, Don Stewart, and John Goerzen) have teamed up to write a new book on Haskell for O’Reilly. Even better, it will be published under a Creative Commons license and released chapter-by-chapter on their website. For now all that’s on their new site is a blog, but that’s sure to change over the coming days and weeks. http://www.realworldhaskell.org/
I did some more Haskell reading over the long weekend, mostly from Yet Another Haskell Tutorial*. There is definitely some challenging stuff (the Monads chapter in A Gentle Introduction to Haskell begins, ‘This section is perhaps less “gentle” than the others…'). Overall, though, the combination of elegance and power and consistency in Haskell is very satisfying. The language has very little to apologize for. I’m not really able to write much code yet, but I’ve started to be able to read it.
In my programming resolutions post last week, I mentioned a short list of languages I was considering learning (or attempting to learn, anyway) in 2007. I’ve decided on Haskell. Some of my reasons: It’s different. My “home language” is Python, which is great. But for a growth exercise, different is good. Blog posts bemoaning the weirdness and difficulty of Haskell only goad me on. Ruby is different from Python, but not as different as Haskell.