There are also ABCL (Common Lisp) and SISC (Scheme) if you want something standard that still runs on the JVM.
There are also ABCL (Common Lisp) and SISC (Scheme) if you want something standard that still runs on the JVM.
Plusses:
-JVM at your disposal
-STM for concurrency (haven't used this much yet but what it offers is nice)
-built-in collection types like you'd see in perl, js, python, etc., which is a much nicer syntax over the more traditional lisp dialects for those of us who aren't hard core lisp programmers.
-nice emacs/slime integration - REPL for debugging, etc.
Minuses:
-The language is still being actively developed and while most of the core features are there, there are some things that I've found missing and some things that are still changing (have had trouble with the project/module/package heirarchy a bit, would like metadata on anonymous functions).
-Debugging can be tricky, stuff will come up from the JVM without an associated line number in the clojure code, though I've seen a patch for this online
-Complexity added by the plusses. The java interop has a lot of power but it takes some getting used to. I also came into this with no recent java experience so YMMV.
-No native OO syntax, and I didn't want to write a hybrid of java/clojure code. Still, it has structs, and the idea (I think) is to use closures as the "glue" rather than objects.