I've been shopping for a new programming language to learn the past few months and I've decided to jump on the functional wagon and expand my mind a little.
I wanted something that was a departure from these more imperative languages which obviously lends itself to the functional languages. At the same time, I wanted something that wasn't purely academic, but I could build real-world software with it that other people could easily use.
I've been fascinated with Lisp and its S-expressions and the idea of code being data and vice versa. At the same time the speedy, static-typed languages like OCaml and Haskell were very intriguing.
After playing with OCaml for a week or two and also working through the first few chapters of Real World Haskell and watching the entertaining Simon Peyton-Jones, I enjoyed them, but I wasn't infatuated with them. No magic spark, I guess you could say. I think it comes down to me being more inclined to the dynamically-typed languages which seems to cut down one more barrier between me and the implementation of my code.
So ruling out the OCaml and Haskell brand of typed, functional languages, I found myself working my way back to Lisp. Surveying the Lisp scene, I found myself confronted with quite a few choices of Lisp implementations. I decided to go with Clojure, as from my readings, it seems to be a nice Lisp, even coming from the older Lisp guys and you get the almost endless number of libraries of Java, as well as the speedy JVM that runs on all the major platforms. I'm sold.
I've played with SBCL going through bits and pieces of Practical Common Lisp and I really enjoy the expressiveness and the speed of going from the idea of what you want to do to actually seeing it run. Stuart Holloway (of nearby Chapel Hill) has written a series of blog posts porting pieces of the PCL code to Clojure which should serve as a nice introductions as well as the screencasts.
I'll post updates on new discoveries I make, and any software I decide to work on.