How are these dialects of each other? By this logic, Javascript is a dialect of C.
How are these dialects of each other? By this logic, Javascript is a dialect of C.
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.
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.
Macros are not something "basically every high level language has", in fact only lisp languages seem to have them, to a point I would call it a key feature of a lisp dialect. And I mean homoiconic, highlevel, written in the same language, macros (not C pre-processor, or Turing complete templates).
Multimethods and metaobject systems are both common features of lisps you rarely find elsewhere (and python's meta object system only barely counts FWIW).
Reader macros, signals, and slime/repls (ones that don't suck anyway) are also common features rarely seen elsewhere.
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.)
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.
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.