質問
私は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引数の手続きをスムーズます。
の結果を作ることです所属していません StackOverflow