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.