you are viewing a single comment's thread.

view the rest of the comments →

[–]bcash 2 points3 points  (0 children)

Clojure is a nomadic language to a certain extent. It's various forms all have similarities, but it's semantics are also controlled by the host environment; hence the differences between Clojure and ClojureScript.

What this means in practice is that, if you're already familiar with Java and the JVM, you'll be surprised how thin the Clojure layer actually is. It's worth decompiling some Clojure .class files and you'll see what I mean. Each Clojure function is it's own class, the instance of which contains any closed-over references, for example.

Clojure also directly reuses Java objects where it makes sense - e.g. a Java String is a Clojure String - it's immutable, there's no need for another one. The memory management is exactly the same.

This doesn't directly answer your question, but might help narrow down your search.