В чем (простыми словами) разница между установкой привязки (LET) и символов (= переменных) в общем lisp?
common-lisp: разница между привязкой и символом
Ответы (2)
Символы и переменные - это два очень разных типа сущностей. Символ - это имя чего-либо; переменная - это контейнер для значения. Переменная может быть названа символом.
Связывание - это связь между символом и переменной; когда действует привязка, вы можете ссылаться на переменную по ее имени. let форма создает такую привязку.
(let ((a 1))) устанавливает значение a равным 1 до тех пор, пока не будет достигнута закрывающая скобка, которая соответствует открывающей скобке до того, как будет достигнута let, после чего a вернется к тому, каким было предыдущее значение (или станет неопределенным) . Вы часто видите let в теле функции, где вам требуются локальные переменные, которые должны выходить за пределы области видимости в конце функции, поэтому вы должны использовать let там.
(setf a 1) устанавливает a в 1 и предполагает, что либо a было ранее определено (с помощью defparameter, defvariable или let), либо что a - новая специальная переменная, которой требуется значение.
Это немного сложнее, но я не уверен, что у меня есть шепелявые слова, чтобы это объяснить.