3 ms·
They are not dialects of each other but all are Lisp dialects. You would not call Scheme a dialect of Emacs Lisp, but both are Lisp dialects.
by rekado 9y ago
They are not dialects of each other but all are Lisp dialects. You would not call Scheme a dialect of Emacs Lisp, but both are Lisp dialects.
- Grue3 9y agoThey are Lisp languages. The syntax is similar, but the languages listed hardly have anything common with each other. They aren't even all on the same side of the classic functional/imperative divide.
- rekado 9y agoWhether something is a dialect or a language from a shared lineage is a difficult distinction, even in natural languages. Shanghainese is called a Chinese dialect, but it is a Wu language. It is not a dialect of Mandarin (aka the Beijing dialect), but it certainly is a dialect of a common "Chinese" language, even though it is a descendent of a language family that is not most closely related to Mandarin. Even speaking of a functional/imperative divide is not necessarily a useful property when talking about Lispy languages. Where would you put Scheme (it's neither fully on the functional side nor does it feel at home on the imperative side). You could just as well make a distinction between Lisp 1 and 2 languages and use that as the primary discriminator. The term "dialect" is fuzzy when applied to different spin-offs from a common pool. (I do agree with you that they have not much in common, but often they were lifted from the same soup of ideas.)
- Grue3 9y ago>Shanghainese is called a Chinese dialect, but it is a Wu language. It is not a dialect of Mandarin (aka the Beijing dialect), but it certainly is a dialect of a common "Chinese" language, even though it is a descendent of a language family that is not most closely related to Mandarin. That's the problem isn't it? A language is assumed to be a dialect of another language just because it uses the same script, regardless of its origins or how mutually intelligible it is. Reminds me of how Russian nationalists don't consider Ukrainian or Belarussian separate languages, but dialects of Russian just because they're written in Cyrillic. Might as well say that English, Hungarian and Vietnamese are dialects of Latin, just because they all use Latin script. Same with Lisps really. People see the parentheses and assume all of these languages must be very similar, even though they really aren't.
- Ngunyan 9y ago>That's the problem isn't it? A language is assumed to be a dialect of another language just because it uses the same script, regardless of its origins or how mutually intelligible it is. Is that really the reason? Does it follow then that Vietnamese is a Chinese dialect before it adopted a modified Latin script? I think origins does matter, apart from shared script.
- lonjil 9y agoIf your only qualifier for something being a dialect of "Lisp" is having lots of parentheses, and a bunch of stuff that basically every high level language has these days, like first class functions and garbage collection, sure. I wouldn't consider something a dialect unless they were similar enough that most code that works in one works in the other with minimal modification. Old Lisp code does not work in Scheme. A lot of it does however work in Emacs Lisp and Common Lisp. So Scheme being in a Lisp "family"? Sure. But not a dialect.
- kbp 9y ago> I wouldn't consider something a dialect unless they were similar enough that most code that works in one works in the other with minimal modification. I agree, but Scheme passes this test more than you might think. When it originally appeared, it really didn't stand out from the crowd of Lisp 1.5 successors that much at all. It even piggybacked off of its host Maclisp implementation, directly calling Maclisp functions extensively from Scheme, to provide any functionality that there wasn't any point re-implementing (ie, most of it). It was basically just a Maclisp package. Modern Scheme still has a lot of features in common with Maclisp of this time (and by extension Common Lisp), like DO (although Scheme's do has slightly different semantics because it's a macro over tail recursion rather than gotos; subtle differences like this are to be expected between dialects), and it's still based off list structure in exactly the same way that Lisps always have been, so there's still CONS, CAR, CDR, RPLACA (renamed set-car!), RPLACD (renamed set-cdr!), NCONC (renamed append!), and so on. Scheme's lexical scoping also made it back into mainline Lisp, and was a pretty big contribution to Common Lisp. A lot of features like CLOS, SETF, and DEFMACRO (none of which were in Lisp 1.5) are very commonly provided by Scheme implementations. Using the historical argument, there's no question at all that Scheme is Lisp. The majority of ancient Lisp programs can be run under modern Schemes with simple compatibility packages. When all the other Lisps either merged into CL or died, though, Scheme continued to be actively used, and as time went on the Scheme community shared less and less code with the mainline Lisp community. Some people argue that with the modern state of things it's not really useful to talk about Scheme as Lisp now, because they kind of "left" Lisp and went off on their own, philosophically. Scheme definitely began as just another Lisp, though.