Return 在 SICP 示例 average-damp 中作为参数的函数

Return a function as argument in SICP example average-damp

我尝试了 SICP 中的以下高阶函数:

(defun average-damp(f)
  (lambda (x) (average x (f x))))
(defun average(x y)
     (/ (+ x y) 2.0))
(defun square(x)
  (* x x))
((average-damp square) 10)

Namely, given a function f, we consider the function whose value at x is equal to the average of x and f(x).

但是运行报错:

progn: Invalid function: (average-damp square)

我确认 squareaverage 工作正常。这是方案中的原始版本average-damp

(define (average-damp f)
  (lambda (x) (average x (f x))))

有什么问题?

您似乎在寻找 applyfuncall。它们具有相似的功能,但接受的论点不同。

(funcall (average-damp square) 10)

另见 https://www.gnu.org/software/emacs/manual/html_node/elisp/Calling-Functions.html