User Tools


Accessor SYMBOL-FUNCTION

Syntax

  • symbol-function symbolcontents
  • (setf (symbol-function symbol) new-contents)

Arguments and Values

Description

Examples

(symbol-function 'car)

#<FUNCTION CAR>

(symbol-function 'twice)

Error: The function FOO is not 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

Side Effects

None.

Affected By

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

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.

\issue{FUNCTION-TYPE:X3J13-MARCH-88} \issue{FUNCTION-TYPE:X3J13-MARCH-88} \issue{FUNCTION-TYPE:X3J13-MARCH-88} \issue{SPECIAL-FORM-P-MISNOMER:RENAME}