По ходу изучения LISP возник вопрос.
В чём разница между (setq a 1) и (setf a 1)?
В обоих случаях мы устанавливаем значение переменной a в 1. Понятно что я могу сделать так
(setq v (make-array '(3)))
;; так допустимо
(setf (aref v 0) "first")
и не могу так
;; так неверно
(setq (aref v 0) "first")
Но ведь (setq a 1) и (setf a 1) одно и тоже. Так зачем вообще использовать setq если его можно заменить setf? Или я что-то не понял?
Форум —
Development

