Hacker News new | past | comments | ask | show | jobs | submit login

I'm not sure anyone programming common lisp would agree with you. There's been no "splintering" of the language due to reader macro usage, and the reader macros that CL already provides are not exactly few. Here's a good post describing the what why and how of CL reader macros:

http://www.reddit.com/r/programming/comments/7sfro/response_...

I would also hesitate to name any particular language feature of Clojure as having an impact on its popularity. I think it's due more to the current zeitgeist of "Lisp is cool, but I program in something else" and "concurrency concurrency concurrency."




I think it's clear which Clojure feature was/is critical to its popularity: the JVM and interop with Java. This isn't a language feature, of course, but it is a marketing master stroke: it removes the principal objection to Lisp, gives people a cognitive-dissonance-free way to try it, positions the language nicely (no small deal) and soothes the savage enterprise. This dynamic is nearly entirely one of perception -- one could argue that technically it's a non-solution to a non-problem -- but perception is a life-and-death factor. It doesn't matter more than reality in the long run (if Clojure weren't a good language, people wouldn't keep using it) but it actually does in the short run.


The problem with that thesis is it has completely failed for Scheme (there are multiple Scheme implementations for the JVM, some are almost a decade old), and arguably for Common Lisp (ABCL came out at approximately the same time as Clojure, and although it's fairly popular as a Common Lisp implementation, it hasn't lead to major growth in adoption).

The reason I think the "it's Lisp but not really a Lisp" is a major factor is the example offered by newLISP. Its biggest thing seems to be "all this macro and lisp-2 and lexical scoping stuff is nonsense, this is not scheme or common lisp, this is a simple language," and despite this paradoxical assertion it has developed a somewhat large user community (a lot larger than Arc's, for example).

The JVM is much less of a factor than many people suggest. Another good example in support of this and the "concurrency" thesis is node.js - it's not the first JS web server (by far), and it's not the first NIO-based web server, but it does combine the two at the right time.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: