I’m really digging this wonderful little language called Clojure. It’s a modern Lisp, meaning it has all the functional goodness I have been craving after using Racket. It’s awesome being able to build things like interpreters and type checkers, which I didn’t think I’d be able to approach so easily (this was part of an awesome programming languages class taught by Robbie Findler). But Clojure is also a JVM language and can be compiled ahead of time, so it’s exceedingly practical and efficient. You can use any Java library and interop with other JVM languages pretty well.
Clojure is a young language, but has a very energetic community. It’s also seeing use both in industry and startups. Check out this talk for more on that.
There’s a lot of resources out there too. I’ve gone through parts of Clojure Programming, done some challenges on 4Clojure, played around with Light Table Playground, and keep finding more things to explore. One book I definitely want to explore is The Joy of Clojure. Also, I’ve decided to go through SICP using clojure, and ran across this gem.
As for tools, I’ve tried CounterClockwise and La Clojure, but for now I’ve settled for my usual lightweight editor: Sublime Text 2, with SublimeREPL. Having a syntax-highlighted REPL that behaves like my editor is pretty nice. Leiningen has been brilliant as a dependency-management tool, which also supports a host of other things like building, testing, running, or launching a REPL with your project. Honestly, Leiningen is the best dependency manager I’ve ever used. I wish there was something this good in Ruby-land.
A great place to find links to all sorts of tools for Clojure development is Clojure Toolbox. It shows how practical Clojure is today.
I have to mention Noir and Korma. If you’re into web dev, you might find yourself loving the simplicity of Noir and the interesting functional approach to persistence in Korma. I find it awesome that Chris Granger, the guy behind Light Table, wrote both of them.
Btw, #clojure on irc.freenode.net is friendly!