4 ms·
why does it say LISP isn't a functional programming language but Clojure is? Isn't Clojure a dialect of Lisp?
by tocomment 17y ago
why does it say LISP isn't a functional programming language but Clojure is? Isn't Clojure a dialect of Lisp?
- abstractbill 17y agoThe article was written by someone who seems to believe "Lisp" is synonymous with "Common Lisp" (We're talking about Common Lisp instead, often shortened to "Lisp"). So it seems Clojure (and Scheme, Arc, etc) are implicitly excluded by the author.
- varjag 17y agoNo, Scheme is Scheme, and Arc is Arc. You don't call Ruby a Python, despite that those languages are much closer than Lisp and Scheme.
- dkersten 17y agoAnd Common Lisp is Common Lisp. They're still dialects of the mythical Lisp. Was there ever an actual just Lisp? Or was there just dialects, eg ZetaLisp, Emacs Lisp, MIT's Lisp Machine Lisp, etc etc
- DrJokepu 17y agoThere was an original LISP dialect; a quick Google search / Wikipedia session yielded this memo about a LISP 1.5 compiler written in 1962: ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-039.pdf Also there's LISP 1.5 Programmer's Manual dated August 17, 1962 which is quite an interesting read: http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf http://www.softwarepreservation.org/projects/LISP/book/LISP%...
- dkersten 17y agoOk, I stand corrected. Thanks for the links, btw, I'll enjoy reading them :-)
- varjag 17y agoCommon Lisp was a joint effort to make a good, portable, featureful Lisp specification. All the parties you mentioned were on the ANSI standard panel, hence "Common" and hence "Lisp". Scheme was never a part of that effort and indeed it shouldn't have been, as it is a standalone language with its objectives and different semantics. It also at no point was ever called LISP, it was Scheme from the very first memo. It is extremely uncommon to Schemer to refer to his code as "I programmed it in Lisp", there is certainly its own, formed identity among the users. LISP itself stems from original McCarthy implementation; its name bears the legacy of 7-bit teletypes of the day. But this point is well elaborated in the write-up we discuss.
- philwelch 17y agoThere were dozens of Lisps before Common Lisp, including Scheme. Is there a reason why there can't be any Lisps after it?
- arb 17y agoThe nomenclature goes something like this. The common noun "lisp" refers to the family of languages; the proper noun "Lisp" refers to Common Lisp; and "LISP" refers to obsolete lisp dialects from long before Lisp's time. Generally, lisps are not necessarily functional, though some dialects are, to varying degrees. Common Lisp isn't very functional at all; Scheme is much more functional; and Clojure is quite strongly functional.
- jcl 17y agoI believe it's because Clojure constrains itself to immutable data structures, while Lisp allows both mutable and immutable structures. You can do functional programming in Lisp -- like you can many other non-functional languages -- but it isn't required as it is in Clojure.
- jrockway 17y agoClojure has mutable data structures now. Apparently it was too hard to write a compiler to figure out what could be mutated, so now it's up to the programmer to perform that optimization.
- deleted 17y ago[deleted]
- astine 17y agoThe author forgets to specify, but he is talking about Common Lisp, not Lisp in general.
- deleted 17y ago[deleted]
- frossie 17y agoWhile we're at it, the name "LISP" is obsolete. It's reminiscent of variants of the broader lisp family of languages, circa 1980. We're talking about Common Lisp instead, often shortened to "Lisp", being a much more modern language." (Unless the author added that after the OP was submitted)
- astine 17y agoI'm sorry, I mistated, the author forgat to specify what he meant by 'Lisp' before writting a page and a half on it. He did get around to it near the end of the article when all of the laypeople left confused about Lisp.
- arb 17y agoI've added a note at the top disambiguating the term too. Thanks for the feedback. :-)