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)
我确认 square
和 average
工作正常。这是方案中的原始版本average-damp
:
(define (average-damp f)
(lambda (x) (average x (f x))))
有什么问题?
您似乎在寻找 apply
或 funcall
。它们具有相似的功能,但接受的论点不同。
(funcall (average-damp square) 10)
另见 https://www.gnu.org/software/emacs/manual/html_node/elisp/Calling-Functions.html
我尝试了 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)
我确认 square
和 average
工作正常。这是方案中的原始版本average-damp
:
(define (average-damp f)
(lambda (x) (average x (f x))))
有什么问题?
您似乎在寻找 apply
或 funcall
。它们具有相似的功能,但接受的论点不同。
(funcall (average-damp square) 10)
另见 https://www.gnu.org/software/emacs/manual/html_node/elisp/Calling-Functions.html