Next: , Previous: gentemp, Up: Symbols Dictionary


10.2.10 symbol-function [Accessor]

symbol-function symbolcontents

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