4 ms·
So are you asserting that Clojure is not a Lisp, or that Clojure indeed uses cons cells, contrary to the comment mentioned above?
by Dangeranger 8y ago
So are you asserting that Clojure is not a Lisp, or that Clojure indeed uses cons cells, contrary to the comment mentioned above?
- lispm 8y agoHow would Clojure be a Lisp, given that it runs zero Lisp code?
- coldtea 8y agoThe argument you made is cyclical -- it assumes what it's asked to prove. To say "Clojure doesn't run Lisp code" is to already assume Clojure is not a Lisp (else you would have to admit that it does run Lisp code: its own).
- lispm 8y ago> The argument you made is cyclical It's not. Lisp code existed before Clojure. If it can only run its own code, then it is no Lisp. Lisps share code. I have a zillion lines of Lisp code. Then Clojure appears. It runs none of my zillion lines of Lisp and none will be directly translated to it (because it uses different data structures, has different operators, has different semantics, has different pragmatics). -> it's no Lisp It's derived from or influenced by Lisp, that's it. Like ML was derived from Lisp (it was originally even implemented in Lisp) and does not run any Lisp code. It's also no Lisp.
- kazinator 8y agoLanguages that don't share code cannot be called dialects, QED. According to the most common linguistic definition of "dialect", they lack "mutual intelligibility". > Like ML was derived from Lisp Like English was derived from Latin, French and Scots (among other things), yet is not Latin or French or Scots. Like Romantic music was derived from Baroque, yet is not Baroque; or rock was derived from blues but isn't blues. Etc.
- kazinator 8y agoTo say "Swahili speakers don't understand English" is already to assume that Swahili is not a dialect of English, and therefore a circular argument. Or else you would have to admit that Swahili speakers do understand an English dialect: their own! Take someone who is trained in Clojure programming and nothing else; which Lisp's code can they understand that is not derived from Clojure, like ClojureScript? Basically, the criterion for a "dialect" is mutual intelligibility. A language which is an island isn't a dialect of anything. Two languages that are not mutually intelligible are not dialects. Lisps are dialects which share a mutual intelligibility formed by the core that comes from the ancient Lisp. They are based on the same or very similar core concepts and use the same names for them.
- coldtea 8y ago>To say "Swahili speakers don't understand English" is already to assume that Swahili is not a dialect of English, and therefore a circular argument. Or else you would have to admit that Swahili speakers do understand an English dialect: their own! That's not really a counter-argument by absurdity to my argument, as it's also valid. To say "Swahili speakers don't understand English" indeed already assumes that Swahili is not a dialect of English. When one says "Swahili speakers don't understand English" they don't make an argument -- they make a statement of fact. Now, one could argue that the fact that Swahili is different than English is well established, and needs no further arguments (as people will already be familiar with it and accept it). But regarding whether Clojure is or is not a dialect of Lisp, I don't think that's the case.
- agumonkey 8y ago'(zero) ?
- lispm 8y ago'(zero . nil)
- Dangeranger 8y agoWhich Lisp code are you asserting it can not run? Scheme? CommonLisp? Racket? Emacs Lisp? Furthermore which of those Lisp dialects can or cannot run each other’s code? Is your definition of “Lisp code” a primordial core of which a set of languages descend? If so, what is that primordial core?
- lisper 8y agoTo my mind the defining characteristic of a Lisp is that code is represented as a first-class data structure, one that can be produced by parsing text, but that has more structure than text. In the case of most Lisp's that first-class structure is a cons cell, and I think that is by far the best choice, but I don't think that using a different structure should be disqualifying by definition. If you're really going to be that strict about it, then Scheme is not a Lisp because its standard does not actually specify the data structure that is used. It only specifies that code can be represented "as data" but it doesn't say what kind of data that is. It could be a string and still conform to the standard.