为什么我们必须使用funcallCommon Lisp 中调用高阶函数?例如,为什么我们必须使用:
(defun foo (test-func args)
(funcall test-func args))
而不是更简单的:
(defun bar (test-func args)
(test-func args))
来自程序背景,我对此感到有点惊讶,因为我更习惯的语言(例如 Python、C#)不需要区分。特别是,至少在源代码级别,C# 编译器将其转换为类似func.invoke().
我看到的唯一问题是,这意味着我们不能再调用全局函数test-func,因为它会被遮蔽,但这几乎不是问题。