如何在此问题中返回功能?我假设它使用(lambda x),但我不太确定如何。
在SCHEME中编写一个函数(也许称为der for derivative),它接受函数f和值 h作为形式参数并返回由规则定义的函数 g(x)=(f(x + h) - f(x))/ h
(如上所述,对于小h,g是f的导数的良好近似。重要说明: 你的函数应该使用函数和数字h作为参数,并返回一个函数。)
答案 0 :(得分:2)
注意:这似乎是作业,所以我不会直接回答,但有关Scheme定义语法和currying的一些注释似乎是合适的。
在Scheme中,你写了类似
的东西(define (add-one x)
(+ x 1))
您将add-one
定义为函数。你可以等效地做
(define add-one
(lambda (x)
(+ x 1)))
因为
(lambda (x)
(+ x 1))
是一个功能。您可以使用
编写类似make-adder
的函数
(define (make-adder addend)
(lambda (x)
(+ addend x)))
相当于
(define make-adder
(lambda (addend)
(lambda (x)
(+ addend x))))
对(make-adder 10)
的调用返回一个函数,该函数接受一个参数并向其添加10。如,
((make-adder 10) 2)
;=> 12
通常,如果您可以使用 n 参数编写函数,则可以使用currying来获取 n -k参数的函数并返回k参数的函数。例如,如果您可以编写一个以f
,x
和h
为参数的函数,并计算f
的导数x
的近似值。 delta h
,例如:
(lambda (f x h)
;; [f(x+h)-f(x)]/h
)
然后你可以通过咖喱来获得f
的函数,该函数返回x
和h
的函数:
(lambda (f)
(lambda (x h)
;; [f(x+h)-f(x)]/h
))