Я программирую на Ubuntu, используя GCL. Из документации по Common Lisp из разных источников я понимаю, что let
создает локальные переменные, а setq
устанавливает значения существующих переменных. В следующих случаях мне нужно создать две переменные и суммировать их значения.
Использование setq
(defun add_using_setq ()
(setq a 3) ; a never existed before , but still I'm able to assign value, what is its scope?
(setq b 4) ; b never existed before, but still I'm able to assign value, what is its scope?
(+ a b))
Использование let
(defun add_using_let ( )
(let ((x 3) (y 4)) ; creating variables x and y
(+ x y)))
В обоих случаях я, кажется, добился того же результата; в чем разница между использованием setq
и let
здесь? Почему я не могу использовать setq
(так как это синтаксически легко) во всех местах, где мне нужно использовать let
?