язык Common LISP: различие между привязкой и символом

Каково (простыми словами) различие между установкой привязки, которой (ПОЗВОЛЯЮТ) и символами (=variables) в языке Common LISP?

6
задан Rainer Joswig 19 April 2010 в 09:17
поделиться

2 ответа

Символы и переменные - это два очень разных типа сущностей. Символ - это имя чего-либо; переменная - это контейнер для значения. Переменная может быть названа символом.

Привязка - это связь между символом и переменной; когда действует привязка, вы можете ссылаться на переменную по ее имени. let form создает такую ​​привязку.

7
ответ дан 16 December 2019 в 21:37
поделиться

(let ((a 1))) устанавливает значение a равным 1 до момента, когда закрывающая скобка, которая соответствует открывающей скобке перед let, будет достигнуто, после чего a возвращается к предыдущему значению (или становится неопределенным). Вы часто видите let в теле функции, где вам требуются локальные переменные, которые должны выйти за пределы области видимости в конце функции, поэтому вы должны использовать let там.

(setf a 1) устанавливает a в 1 и предполагает, что либо a было ранее определено (с помощью defparameter, defvariable или let), либо что a - новая специальная переменная, которой требуется значение.

Это немного сложнее, но я не уверен, что у меня есть шепелявые слова, чтобы это объяснить.

1
ответ дан 16 December 2019 в 21:37
поделиться