我定义了Scheme过程以返回带有2个参数的另一个过程:
(define (smooth f)
(λ(x dx)(/ (+ (f (- x dx))
(f x)
(f (+ x dx)))
3.0)))
如果我用带有2个参数10和0.0001的sin程序运行这个程序,那么就可以了
((smooth sin) 10 0.0001) ==> -0.544021109075966
如果我递归地运行这个过程,那么它有错误
((smooth (smooth sin)) 10 0.0001)
==> procedure expects 2 arguments, given 1: #<promise:temp6>
所以有人能告诉我我的问题在哪里吗? 提前谢谢!!!
PS:这是SICP的1.44运动的一部分答案 0 :(得分:2)
这很简单,(smooth sin)
的结果是2参数过程,它变成外SMOOTH中的F,而F只应用于一个值。
解决方法是将SMOOTH的结果改为1参数程序,然后重复应用它。