Hacker News new | ask | show | jobs
by eadmund 1547 days ago
But Clojure is not a Lisp. It is Lisp-adjacent, a bit, but it is really not the same language.
3 comments

>Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. [0]

Neither the Clojure page, nor its users seem to agree with you.

[0] https://clojure.org/

I think the typical argument goes something along the lines of, "it uses []{} and doesn't make cons the default data structure, abandoning some simplicity-of-language."
Aren't the brackets/braces just sugar?
It's not Lisp-as-in-Common-Lisp. It's closer to Scheme than to CL.

But it's "a Lisp" in the colloquial sense that it uses s-expression syntax and has macros.

Not s-expressions in the traditional Lisp definition of singly linked lists. In Lisp (a . b) is a cons cell with two symbols a and b. In Clojure it is some complex data structure with three elements a, ., and b.
Let's see:

- Insists on every expression being (wrapped (in parenthesis))

- Uses polish prefix notation

- Profound belief that recursion is more intuitive than loops

- Macros everywhere, because code is data, so why not?

- Whole language built from a very small set of axioms

- REPL-based workflow

QED Clojure is _a_ Lisp.

(FWIW I'm learning Racket right now)

Lisp: "List processing". Clojure doesn't even have cons cells... A Lisp without cons cells is like a C derivative without pointers...is it really C at that point? I'd also question the "profound belief that recursion is more intuitive than loops" since Lisp supports loops extremely well -- better than most languages, since you can build up your own iterative constructs using tagbody. And Clojure doesn't even have proper tail calls, so I doubt that Clojure actually believes in recursion.
Clojure doesn't have tail calls because they should be implemented at the JVM level to be effective, a feature which has been on the back burner for ever because no other languages would use them.
Programming languages on top of the JVM would not use that? Who said that?
Perfect example of the Curse, thank you.