My path to Clojure
blog.n01se.net
blog.n01se.net
Given its present state, it would be about as hard to separate Clojure from the JVM as Java.
Perhaps someone will rip off its ideas and create L#.
(Seems like that strategy could also be applicable to a native port, using an embedded jvm to handle whatever has not been ported from java land)
and FWIW (i have little .net knowledge)
ubuntu:~% ikvm -jar clojure.jar
Clojure
user=> (. cli.System.IO.File OpenText "/dev/null")
#<StreamReader System.IO.StreamReader>
(startup takes about 6x times as long with ikvm than java -client. compiling with ikvmc creates a clojure.exe which instead takes 9x to start. clojure-1240 non-slim, java 1.6.0_07, ikvm 0.34.0.4, mono 1.9.1)Apparently the latest version of mono has much better AOT support, and performance improvements as well.
On the other hand, I like it because it is a "new/beautiful and novel language."
JavaScript: http://code.google.com/p/clojure-contrib/source/browse/#svn/...
I wouldn't call macros a hard necessity, however. You can accomplish quite a lot, quickly, in Ocaml or Haskell, even though they're statically typed languages with no macros. Functors, type classes, and various cool design patterns (e.g. monads) provide a lot of the abstraction and code reuse that macros provide. Also, I'd rather use a statically-typed language for a project with 4+ developers.
I think that 90% of Lisp's headway over a language like Java comes from the functional paradigm, and 10% from macros.
But on the flip-side, Clojure's lack of a real object system can be frustrating. It is also annoying that you have to actively work around the JVM (for example, when making tail calls). Generally it is a beta-quality languages with some issues that need to be worked out. (I stick with Haskell for now when I want to write in a functional style, and CL for everything else.)
Also, while having Java libraries is better than having no libraries at all, the code that uses Java libraries becomes very un-lispy. It is a reasonable compromise, but certainly not ideal.
Regarding Clojure's object system, people tend to build their own. The tools are there. Within 12-24 months, there'll probably be a "default" object system. Right now, there isn't one because the language is still molten hot right now.
Most Clojure code I've written hasn't been that un-Lispy. Usually the first thing I do is build helper functions to abstract away all the Java classes.