symbol—a symbol.
value—an object.
set
changes the contents of the value cell of symbol
to the given value.
(set symbol value) ≡ (setf (symbol-value symbol) value)
(setf (symbol-value 'n) 1) → 1 (set 'n 2) → 2 (symbol-value 'n) → 2 (let ((n 3)) (declare (special n)) (setq n (+ n 1)) (setf (symbol-value 'n) (* n 10)) (set 'n (+ (symbol-value 'n) n)) n) → 80 n → 2 (let ((n 3)) (setq n (+ n 1)) (setf (symbol-value 'n) (* n 10)) (set 'n (+ (symbol-value 'n) n)) n) → 4 n → 44 (defvar *n* 2) (let ((*n* 3)) (setq *n* (+ *n* 1)) (setf (symbol-value '*n*) (* *n* 10)) (set '*n* (+ (symbol-value '*n*) *n*)) *n*) → 80 *n* → 2 (defvar *even-count* 0) → *EVEN-COUNT* (defvar *odd-count* 0) → *ODD-COUNT* (defun tally-list (list) (dolist (element list) (set (if (evenp element) '*even-count* '*odd-count*) (+ element (if (evenp element) *even-count* *odd-count*))))) (tally-list '(1 9 4 3 2 7)) → NIL *even-count* → 6 *odd-count* → 20
The value of symbol is changed.
The function set
is deprecated.
set
cannot change the value of a lexical variable.