为什么我们必须使用funcallCommon Lisp中的高阶函数?例如,为什么我们必须使用:
(defun foo (test-func args)
(funcall test-func args))
Run Code Online (Sandbox Code Playgroud)
而不是更简单:
(defun bar (test-func args)
(test-func args))
Run Code Online (Sandbox Code Playgroud)
来自程序背景,我有点惊讶,因为我更习惯的语言(例如Python,C#)不需要区分.特别是,至少在源代码级别,C#编译器将其转换为类似的东西func.invoke().
我看到的唯一问题是,这意味着我们不能再调用全局函数test-func,因为它会被遮蔽,但这不是问题.
我对Lisp比较陌生,我想知道"+"函数是否确实存在上限.
(我想这适用于所有其他算术函数" - ","/"等)