質問

私は2つのパラメータで別の手順を返すために、Schemeの手順を定義します:

(define (smooth f)
  (λ(x dx)(/ (+ (f (- x dx))
             (f x)
             (f (+ x dx)))
          3.0)))

私は2つの引数10と0.0001で罪の手順で、この手順を実行する場合、それは大丈夫です。

  ((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のです。

役に立ちましたか?

解決

これは非常に単純だ、(smooth sin)の結果は外側SMOOTHにFとなり、Fは唯一つの値に適用される2引数の手順である。

ソリューションは、あなたがそれを繰り返し適用することができ、代わりに1引数の手続きをスムーズます。

の結果を作ることです
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top