Ich versuche Lisp zu lernen und sehe mir alle Lisps da draußen und ihre Unterschiede an.
Ich sehe, dass Sie in einigen Implementierungen von Scheme eckige Klammern aus Gründen der Lesbarkeit austauschbar mit runden Klammern verwenden können. Da sie also gleich behandelt werden, gehe ich davon aus, dass sie wie alles andere nur S-Ausdrücke sind.
In Clojure sehe ich jedoch, dass eckige Klammern und geschweifte Klammern verwendet werden, um verschiedene Datentypen wie Vektoren usw. darzustellen. Sind diese auch noch gültige S-Ausdrücke oder müssen sie als Atome betrachtet werden? Bricht dies nicht das gesamte Konzept der S-Ausdrücke und macht Clojure dadurch zu einem "unreinen" Lisp?
S-Ausdrücke sind eine Textdarstellung für Daten. Zahlen, Symbole, Nachteile, Zellen, Listen, Zeichenfolgen, ... Common Lisp bietet auch Textdarstellungen für Arrays, Vektoren, weitere Zahlentypen, Zeichen, ... Common Lisp bietet auch einen vom Benutzer erweiterbaren Reader, den der Benutzer hinzufügen kann mehr Textdarstellungen für Datentypen. Manchmal wird dieser Mechanismus auch verwendet, um die Syntax der Programmiersprache Lisp zu ändern (z. B. um Infix-Ausdrücke oder Anweisungen aus anderen Programmiersprachen zu unterstützen).
Wenn also ein Lisp-Dialekt Textdarstellungen für zusätzliche Datentypen bietet, passt dies gut zur Idee von S-Ausdrücken.
quelle