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****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*.