0

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

4

1 回答 1

2

这很简单,结果(smooth sin)是一个 2 参数过程,它成为外部 SMOOTH 中的 F,并且 F 仅应用于一个值。

解决方案是将 SMOOTH 的结果改为 1-argument 过程,然后您可以重复应用它。

于 2010-03-31T08:46:36.633 回答