В чем разница между Lisp-1 и Lisp-2?



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

672   2  

2 ответов:

по данным Википедия:

является ли отдельное пространство имен для функций преимуществом, является источником разногласий в сообществе 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 in Small Pieces" также обсуждаются различия, сплетенные в тексте.

Comments

    Ничего не найдено.