Каково (простыми словами) различие между установкой привязки, которой (ПОЗВОЛЯЮТ) и символами (=variables) в языке Common LISP?
Символы и переменные - это два очень разных типа сущностей. Символ - это имя чего-либо; переменная - это контейнер для значения. Переменная может быть названа символом.
Привязка - это связь между символом и переменной; когда действует привязка, вы можете ссылаться на переменную по ее имени. let
form создает такую привязку.
(let ((a 1))) устанавливает значение a равным 1 до момента, когда закрывающая скобка, которая соответствует открывающей скобке перед let, будет достигнуто, после чего a возвращается к предыдущему значению (или становится неопределенным). Вы часто видите let в теле функции, где вам требуются локальные переменные, которые должны выйти за пределы области видимости в конце функции, поэтому вы должны использовать let там.
(setf a 1) устанавливает a в 1 и предполагает, что либо a было ранее определено (с помощью defparameter, defvariable или let), либо что a - новая специальная переменная, которой требуется значение.
Это немного сложнее, но я не уверен, что у меня есть шепелявые слова, чтобы это объяснить.