Hacker News new | ask | show | jobs
by Guthur 3943 days ago
I too would love to know the basis of the "Modern Lisp" meme. There is very little in Clojure that has not been done before.
2 comments

As a long time Common Lisper, allow me to disagree. The STM and concurrency features of Clojure are what brought me in, and they certainly haven't been "done before". Common Lisp's concurrency story was always poor.

You could also argue that the effects of lazy evalutation and transducers could have been achieved before using SERIES package, but then you surely haven't tried to actually use and debug SERIES code.

> The STM and concurrency features of Clojure are what brought me in, and they certainly haven't been "done before". Common Lisp's concurrency story was always poor.

It's the JVM that does most of the work here for Clojure. You get the same features when working in Java if you wanted them.

Most CL implementations provide access to native threads and kernel polling facilities (kqueue, select, epoll, etc).

If "modern," means, "leverages the libraries and implementation of a well-funded ecosystem" then I suppose you have a point. Clojure is quite modern. And that is confusing.

> You could also argue that the effects of lazy evalutation and transducers could have been achieved before using SERIES package, but then you surely haven't tried to actually use and debug SERIES code.

I'd much rather debug CL code any day. Even at its worst it is still far ahead of Java's tracebacks and having to mentally map them back to where the error occurred in your Clojure code.

and yet I have never seen STM being used in the clojure community, show me a project that really leverages Clojure's STM, they aren't any.
In general, I would not expect something "modern" to be doing new things, but doing everything that has come to be expected and doing it well.

I have no opinion that I would defend as to the degree to which that applies to Clojure.