While reading Paul Graham's On Lisp I found the following function in Chapter 4, Utility Functions.
(defun symb (&rest args)
(values (intern (apply #'mkstr args)))) ;; mkstr function is "applied"
;; which evaluates like in the following example:
> (symb nil T :a)
NILTA
I would like to understand what is the difference with the following function, slightly different:
(defun symb1 (&rest args)
(values (intern (mkstr args)))) ;; directly calling mkstr
;; which evaluates like in the following example:
> (symb1 nil T :a)
|(NIL T A)|
In this second version, mkstr is directly evaluated with args arguments, but I don't understand why we need to do (apply #'mkstr ...) in the original.