Snap and Lisp Lassi Kortela 14 May 2024 12:14 UTC

>> I’m very tempted to try make a case for calling ‘Snap!’ a scheme dialect:
>> https://snap.berkeley.edu  (looks like another block programming clone of
>> scratch, but has scheme capabilities like first class functions)

> Snap! may have similar semantic to Scheme but I would not call Scheme
> a graphical/block language, it's not even lisp. The same JavaScript, R or Ruby
> have lisp similarities but calling those languages lisp would be overuse of
> the term. Some people call them lisp though.

Scheme is Lisp, and the main feature of Lisp is that code is represented
as lists. (I would go so far as to argue that all other features of Lisp
are tangential, and I can back up my claim.)

John McCarthy considered it very important for a language to have one
abstract syntax (e.g. lists) which can be manipulated (e.g. macros).
Such a language can have several concrete syntaxes that interoperate via
the shared abstract syntax. (Racket is exploring in this direction.)

A language with two concrete syntaxes, a visual block-based one and a
textual list-based one, would fit within McCarthy's parameters.
https://snap.berkeley.edu/snap/help/SnapManual.pdf sounds very Lisp-like
but I can't find a concrete list-based representation of Snap programs.