在阅读 Paul Graham 的On Lispfunction
时,我在第 4 章实用函数中发现了以下内容。
(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
我想了解以下功能有什么区别,略有不同:
(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)|
在这第二个版本中,mkstr
直接用args
参数进行评估,但我不明白为什么我们需要(apply #'mkstr ...)
在原始版本中这样做。