If I could just get half of what's in Clojure trickle into the mainstream languages I'd be a happy bunny.
If I could just get half of what's in Clojure trickle into the mainstream languages I'd be a happy bunny.
As to trickling from Clojure to the mainstream - I wonder how far this could go without the foundation work that went into creating Clojure as it is. You definitely need a clutter-free syntax for functions as data, otherwise "(alter ref inc)" becomes "alter(ref, lambda x: inc(x))". Bad. Macros help too but I don't want this to turn into a "turn all languages into Lisps" rant :)
Why aren't you a happy bunny with Clojure?
I have two observations to contribute:
* I noticed that my clients stopped caring about languages a long time ago. It is now known that there are many languages and more than one "right" choice. If asked about technology, saying you write software in Clojure, which runs on the JVM and uses Java libraries is accepted as a perfectly valid answer.
* Certain concepts have a fundamental complexity and cannot be simplified any further. Clojure got a lot of things right. Trying to "trickle down into mainstream languages" sounds like a hopeless task: you will end up either dumbing things down or making them difficult to use because other supporting parts of the language aren't there.
For your second point I completely agree. But shouldn't say, multimethods be doable in most other languages? In some, who are very strongly leaning towards OO, it probably wouldn't make that much sense. But others who can be written in a functional style could certainly benefit from it.
I know a couple of people who've secretly used Clojure at their Java jobs. I don't know what will happen to them when they go through code review, but it's pretty cool that they can do that.