The 'funcall' function calls a function with a series of arguments. It returns the result from calling the function with the arguments.
(funcall '+ 1 2 3 4)                 ; returns 10
(funcall #'+ 1 2 3 4)                ; returns 10
(funcall '+ '1 '2 '3)                ; returns 6
(setq sys-add (function +))          ; returns #<Subr-+: #22c32>
(setq a 99)
(funcall sys-add 1 a)                ; 100
(funcall sys-add 1 'a)               ; error: bad argument type
                                     ;   you can't add a symbol, only it's value
(setq a 2)                           ; set A
(setq b 3)                           ; and B values
(funcall (if (< a b) (function +)    ; 'function' can be computed
                     (function -))
         a b)                        ; returns 5
(defun add-to-list (arg list)        ; add a list or an atom
   (funcall (if (atom arg) 'cons     ;   to the front of a list
                           'append)
            arg list))
(add-to-list 'a '(b c))              ; returns (A B C)
(add-to-list '(a b) '(b c))          ; returns (A B B C)
In XLISP, a '
(defun funcall* (function &rest args)
  (if (eq (type-of function) 'fsubr)
      (eval (cons function args))
      (apply function args)))