【发布时间】:2021-06-09 18:03:51
【问题描述】:
我正在研究SICP,但我并没有完全理解函数返回背后的想法。
(define (deriv g)
(lambda (x)
(/ (- (g (+ x dx)) (g x))
dx)))
上面的代码将被用作 ((deriv square) 10),为什么我们不能让这段代码更简单呢?通过 1 步评估结果?
(define (deriv g x)
(/ (- (g (+ x dx)) (g x))
dx))
为什么我们真的需要函数作为返回值? 抽象?部分申请?我想有一个更简单、更清晰的想法,我们需要它做什么,在哪里使用它。谢谢!
【问题讨论】:
-
把它想象成一个返回特殊函数的通用函数;一个“函数生成器”,用于抽象出可以重新用于更具体目的的通用代码。
标签: scheme lisp racket higher-order-functions sicp