![[LISPWORKS]](../Graphics/LWSmall.gif)
Syntax:
symbol-value symbol => value
(setf (symbol-value symbol) new-value)
Arguments and Values:
symbol---a symbol that must have a value.
value, new-value---an object.
Description:
Accesses the symbol's value cell.
Examples:
(setf (symbol-value 'a) 1) => 1
(symbol-value 'a) => 1
;; SYMBOL-VALUE cannot see lexical variables.
(let ((a 2)) (symbol-value 'a)) => 1
(let ((a 2)) (setq a 3) (symbol-value 'a)) => 1
;; SYMBOL-VALUE can see dynamic variables.
(let ((a 2))
(declare (special a))
(symbol-value 'a)) => 2
(let ((a 2))
(declare (special a))
(setq a 3)
(symbol-value 'a)) => 3
(let ((a 2))
(setf (symbol-value 'a) 3)
a) => 2
a => 3
(symbol-value 'a) => 3
(let ((a 4))
(declare (special a))
(let ((b (symbol-value 'a)))
(setf (symbol-value 'a) 5)
(values a b))) => 5, 4
a => 3
(symbol-value :any-keyword) => :ANY-KEYWORD
(symbol-value 'nil) => NIL
(symbol-value '()) => NIL
;; The precision of this next one is implementation-dependent.
(symbol-value 'pi) => 3.141592653589793d0
Side Effects: None.
Affected By:
Exceptional Situations:
Should signal an error of type type-error if symbol is not a symbol.
Should signal unbound-variable if symbol is unbound and an attempt is made to read its value. (No such error is signaled on an attempt to write its value.)
See Also:
boundp, makunbound, set, setq
Notes:
symbol-value can be used to get the value of a constant variable. symbol-value cannot access the value of a lexical variable.