This is hugely exciting, but I'm really hoping that someone comes up with a satisfying solution to the conditional compilation problem soon. It'd be pretty depressing if the only things that were portable between implementations were algorithms.
I also hope for a good solution. I disagree about portability though.
It is awesome to have different dialects of clojure, which are the same wherever possible, and vary only where they have to.
The purpose of a different dialect is to take advantage of a different host vm/language. Enforcing uniformity across all dialects would preclude this.
But my point is, even accounting for variations, having a uniform representation for programming primitives across all these hosts is a huge win.
Its great that I'll be able to play with, take advantage of Lua without learning the details of its language. Instead of learning new syntax and semantics, all I need to know is the precise details of how this clojure dialect is different. This is much easier and more accessible than starting from scratch. I don't want to have to learn these languages in order to use them.
Finally, given the trend towards declarative representation, I expect a lot more than algorithms to be portable. I expect all the clojure dialects will be pretty interoperable from a SOA perspective.
I think we do actually agree. I just want it to be possible to have cross-platform libraries, not it to be mandatory. But it would be nice if, for instance, sql libraries were portable as long as you weren't doing anything unusual.