Вопрос

Я пытался понять разницу между LISP-1 и LISP-2 и то, как это связано с Clojure, но я все еще не понимаю должным образом. Кто -нибудь может просветить меня?

Это было полезно?

Решение

Согласно с Википедия:

Независимо от того, является ли отдельное пространство имен для функций преимуществом является источником спора в сообществе LISP. Обычно его называют дебатами LISP-1 против LISP-2. LISP-1 ссылается на модель схемы, а LISP-2 относится к модели Common LISP.

Это в основном о том, могут ли переменные и функции иметь одинаковое имя без столкновения. Clojure-это lisp-1 Это означает, что он не позволяет одновременно использовать одно и то же имя для функции и переменной.

Другие советы

Вы можете прочитать это бумага Ричард Габриэль. Это краткое изложение вопросов, которые сообщество LISP обсуждало в LISP1 против LISP2. Это немного плотно и медленно движется в первых нескольких разделах, но к тому времени, когда вы пройдете прошлый раздел 5, его гораздо легче прочитать.

По сути, LISP1 имеет единую среду, которая отображает символы значениям, и эти значения могут быть либо «обычными», либо функциями. LISP2 имеет (по крайней мере) два пространства имен (символы имеют слот для своего значения функции и одно для обычного значения). Таким образом, в LISP2 вы можете иметь функцию с именем Foo и значение с именем Foo, тогда как в LISP1 имя Foo может относиться только к одному значению (функции или иным образом).

Существует несколько компромиссов и различий вкуса между ними, но прочитайте бумагу для деталей. Книга Кристиана Квиннека «LISP в маленьких частях» также обсуждает различия, вплетенные через текст.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top