4 ms·
Lisp usually means a Lisp which identifies as such: Common Lisp, Emacs Lisp, ISLisp (which is an ISO Standard), Emacs Lisp, AutoLisp, Interlisp, ... Languages
by lispm 3y ago
Lisp usually means a Lisp which identifies as such: Common Lisp, Emacs Lisp, ISLisp (which is an ISO Standard), Emacs Lisp, AutoLisp, Interlisp, ...
Languages like Scheme have their own standards (RNRS, IEEE Scheme, SRFI, ...).
It's perfectly fine to make a difference between Lisp and Scheme, for example. In the Scheme literature "Lisp" often means the earlier&older language before Scheme. A language which emphasizes symbols, property lists on symbols, lists, imperative programming, several namespaces, dynamic binding, ... Common Lisp, even though it is younger than Scheme, preserves the Lisp features from before Scheme. Other Lisp languages, like Emacs Lisp and ISLisp, are also backwards compatible.
There is also an idea of a wider family of Lisp-inspired languages, but that has very little practical meaning because they are often very different languages: Logo, Dylan, Racket, Clojure, newLisp, Hy, LispE, ... JavaScript, R, ...
- samatman 3y agoThe first line of the Wikipedia page on Scheme reads "Scheme is a dialect of the Lisp family of programming languages." https://en.wikipedia.org/wiki/Scheme_(programming_language) https://en.wikipedia.org/wiki/Scheme_(programming_language) If Scheme is a Lisp dialect, then it is a Lisp. This is commonly how the word is used. You may prefer the more narrow and prescriptive definition you've provided, that's fine I suppose, but as a matter of descriptive linguistics, it is common to refer to Scheme as such as well.
- lispm 3y agoThe difference has not been "provided by me", the discussion around Lisp family vs. dialects goes on for several decades. We had the same discussions on comp.lang.lisp decades ago, while Scheme users then had their own comp.lang.scheme . Lisp dialect? Sure, long ago. Now Scheme is its own language. It's like the uncle who now no longer lives in Germany and speaks no longer German, but lives in England where they speak a Germanic Language, called English, which again has its own dialects. https://en.wikipedia.org/wiki/Germanic_languages https://en.wikipedia.org/wiki/Germanic_languages English has its roots in old Common Germanic (no joke, see https://en.wikipedia.org/wiki/Proto-Germanic_language https://en.wikipedia.org/wiki/Proto-Germanic_language). Here we have the difference between Germanic and German. It's basically the same between the Lisp family ("Lispic") and Lisp. There are many other places where authors in the Scheme literature have emphasized the difference between (original) Lisp and Scheme. They tell for example how things are done in Scheme vs. Lisp. The SICP foreword says "Lisp changes. The Scheme dialect used in this text has evolved from the original Lisp and differs from the latter in several important ways, including static scoping for variable binding and permitting functions to yield functions as values." If there are enough of these changes then Scheme begins to be its own language family. Kent Pitman once has explained this: https://groups.google.com/g/comp.lang.lisp/c/TEk4O4-zsA8/m/HLonoeiFG4cJ https://groups.google.com/g/comp.lang.lisp/c/TEk4O4-zsA8/m/H... Typical user question: "should I learn Lisp or Scheme?", answer from Kent: "learn both". then he explains: "Others divide up this space differently than I, but for most purposes, I personally regard them as distinct langauges, not mere dialectal variations, although plainly they are from what I would call the same language family." That's my view also. The difference once has been described like this: Schemer: "Buddha is small, clean, and serious." Lispnik: "Buddha is big, has hairy armpits, and laughs."
- kazinator 3y agoBut the Common Lisp dialect also "has evolved from the original Lisp and differs from the latter in several important ways, including static scoping for variable binding and permitting functions to yield functions as values". :)
- lispm 3y agoBut with an effort to be backwarts (sic!) compatible. Code moved from Maclisp to ZetaLisp to Common Lisp. One can write (mapcar (function (lambda (...) ...)) ...), but the (dolist (...) ...) is still there. Even PROG is still there. For Scheme code needed to be rewritten, especially since Scheme changed more: syntax, different macro system, different control flow, different control flow abstractions, less built-in features, old features added back by libraries, ...