in which new paradigms are explored, clojure is reached, and impressions are still cursory

With the new year coming up, I've been planning what I'll be focusing on in 2009. I toyed with the idea of learning Haskell, but after watching these videos I couldn't help but give Clojure a shot. I've played around with functional programming a bit in Elisp and Scheme and am familiar with the concepts, but I don't think you can really get immersed in FP without the variables-are-immutable-by-default paradigm that the strict FP languages offer. Clojure is a modern dialect of Lisp designed from the ground up with concurrency in mind.

First impressions about the language:

I'm looking at using the Hashdot project to help improve the CLI situation. We're using it at work with JRuby, but it works with anything that's JVM-hosted. It gives you a better launcher and overall shell experience but also makes the process name look decent instead of the meaningless jumble of alphanumerics that java gives you out of the box and provides some dæmonization help.

As a way of diving in, I'm using the Compojure web framework to port over my RailsDay 06 application. Compojure is inspired by Sinatra[2], and it seems to be a pretty slick way to put together web apps, though overall the Clojure community is not nearly as web-centric as Ruby's.


All in all, Clojure is an extremely impressive package. Lisp has always offered significant advantages in expressivity and power, but it's often come packaged in some rather disagreeable garb, like the ANSI Common Lisp standard that feels like it hasn't changed since the mid-80's or Elisp's lack of lexical scoping. Things that only made sense back then are stuck with most present-day lisps, but Clojure is very refreshing in the way that it learns from history while still being able to break away from it in places where it needs to.

[1] Clojure can make the Kessel Run in under twelve parsecs.

[2] Often described as "Camping without the LSD".

« older | 2009-01-03T22:08:56Z | newer »