Any symbol in Common Lisp has a slot for a variable to be bound and a separate slot for a function to be bound.
Note that the naming in this example is only for illustration. Global variables should not be named foo, but *foo*. The latter notation is a convention to make it clear that the variable is a special variable using dynamic binding.
CL-USER> (boundp 'foo) ;is FOO defined as a variable? NIL CL-USER> (defvar foo 7) FOO CL-USER> (boundp 'foo) T CL-USER> foo 7 CL-USER> (symbol-value 'foo) 7 CL-USER> (fboundp 'foo) ;is FOO defined as a function? NIL CL-USER> (defun foo (x y) (+ (* x x) (* y y))) FOO CL-USER> (fboundp 'foo) T CL-USER> foo 7 CL-USER> (symbol-function 'foo) #<FUNCTION FOO> CL-USER> (function foo) #<FUNCTION FOO> CL-USER> (equalp (quote #'foo) (quote (function foo))) T CL-USER> (eq (symbol-function 'foo) #'foo) T CL-USER> (foo 4 3) 25 CL-USER> (funcall foo 4 3) ;get an error: 7 is not a function CL-USER> (funcall #'foo 4 3) 25 CL-USER> (defvar bar #'foo) BAR CL-USER> bar #<FUNCTION FOO> CL-USER> (funcall bar 4 3) 25 CL-USER> #'+ #<FUNCTION +> CL-USER> (funcall #'+ 2 3) 5