|
ANSI Common Lisp 10 Symbols 10.2 Dictionary of Symbols
10.2.10 symbol-function |
Accessor |
- Syntax:
-
symbol-function
symbol
contents
(setf
(symbol-function symbol) new-contents)
- Arguments and Values:
-
symbol - a symbol.
contents -
If the symbol is globally defined as a macro or a special operator,
an object of implementation-dependent nature and identity is returned.
If the symbol is not globally defined as
either a macro or a special operator,
and
if the symbol is fbound,
a function object is returned.
new-contents - a function.
- Description:
-
Accesses the symbol's function cell.
- Examples:
-
(symbol-function 'car) #<FUNCTION CAR>
(symbol-function 'twice) is an error ;because TWICE isn't defined.
(defun twice (n) (* n 2)) TWICE
(symbol-function 'twice) #<FUNCTION TWICE>
(list (twice 3)
(funcall (function twice) 3)
(funcall (symbol-function 'twice) 3))
(6 6 6)
(flet ((twice (x) (list x x)))
(list (twice 3)
(funcall (function twice) 3)
(funcall (symbol-function 'twice) 3)))
((3 3) (3 3) 6)
(setf (symbol-function 'twice) #'(lambda (x) (list x x)))
#<FUNCTION anonymous>
(list (twice 3)
(funcall (function twice) 3)
(funcall (symbol-function 'twice) 3))
((3 3) (3 3) (3 3))
(fboundp 'defun) true
(symbol-function 'defun)
implementation-dependent
(functionp (symbol-function 'defun))
implementation-dependent
(defun symbol-function-or-nil (symbol)
(if (and (fboundp symbol)
(not (macro-function symbol))
(not (special-operator-p symbol)))
(symbol-function symbol)
nil)) SYMBOL-FUNCTION-OR-NIL
(symbol-function-or-nil 'car) #<FUNCTION CAR>
(symbol-function-or-nil 'defun) NIL
- Affected By:
-
defun
- Exceptional Situations:
-
Should signal an error of type type-error if symbol is not a symbol.
Should signal undefined-function if symbol is not fbound
and an attempt is made to read its definition. (No such error is signaled
on an attempt to write its definition.)
- See Also:
-
fboundp,
fmakunbound,
macro-function,
special-operator-p
- Notes:
-
symbol-function cannot access the value of a lexical function name
produced by flet or labels; it can access only
the global function value.
setf may be used with
symbol-function to replace a global function
definition when the symbol's function definition
does not represent a special operator.
(symbol-function symbol) ==(fdefinition symbol)
However, fdefinition accepts arguments other than just symbols.
- Allegro CL Implementation Details:
-
None.
|