I don't value purity; I value coherence, and a good sense of direction. I would take JVM interoperability over purity any day, because the value of whatever compromise this entails far exceeds its cost.
In fact, I don't even consider it a compromise because for all their strengths, neither Haskell nor Erlang solve all problems. In that respect Scala is right. Scala is wrong, however, to think that each concept's deficiencies need to be addressed in the same language. It could have worked in theory, maybe, but the result in practice turned out an ugly mess.
I believe in combining forces through a few languages that interoperable over one platform, and the JVM achieves this quite well.
> And even when they maybe do (e.g., Erjang exists) they don't provide easy access to the ecosystem.
Sure they do. Erjang (and Frege, for that matter) support straightforward integration with Java.
What do you find conceptually impure about Clojure?
Re:Scala: sharp and gets things cut
by dragonwriter on Monday October 07, 2013 @02:17PM
(#6510098)
In the sense in which conceptually pure was being used upthread for langauges which have a very strong opinion on the constructs appropriate for software development (Haskell with pure functional programming, Erlang with actor-model concurrency), I don't see Lisps in general, including Clojure, as being conceputally pure (there is a kind of conceptual purity there, but its at a lower level and in a sense opposed to the kind of purity at issue here, as I see it.)
Clojure is a lisp, but that's not why it's coherent. It's coherent because it has a clear model of data, state, abstraction and computation. It's not only clear, but (like Erlang) resembles the way people think about the world and about computation.
> There doesn't even need to be a "transition" on the JVM, but a gradual, selective use of languages in certain circumstances.
To an extent, that's true on any machine so long as none of the languages interposes its own runtime on top of the machine and the languages use common calling conventions.
But the conceptually pure alternatives to Java pointed out in this thread (like Erlang and Haskell) generally don't run on the JVM. And even when they maybe do (e.g., Erjang exists) they don't provide easy access to the ecosystem.