计划程序问题

时间:2010-03-31 08:28:44

标签: scheme sicp

我定义了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运动的一部分

1 个答案:

答案 0 :(得分:2)

这很简单,(smooth sin)的结果是2参数过程,它变成外SMOOTH中的F,而F只应用于一个值。

解决方法是将SMOOTH的结果改为1参数程序,然后重复应用它。