在SICP示例平均阻尼中返回函数作为参数

问题描述 投票:0回答:1

我尝试了以下来自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)

即,给定函数f,我们考虑其值为x的函数等于x和f(x)的平均值。

但是运行它会报告错误:

progn: Invalid function: (average-damp square)

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

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

怎么了?

elisp
1个回答
1
投票

您似乎正在寻找applyfuncall。它们具有相似的功能,但接受其参数的方式不同。

(funcall (average-damp square) 10)

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

© www.soinside.com 2019 - 2024. All rights reserved.