Domanda
Ho definito la procedura Schema di tornare un'altra procedura con 2 parametri:
(define (smooth f)
(λ(x dx)(/ (+ (f (- x dx))
(f x)
(f (+ x dx)))
3.0)))
Se corro questa procedura con procedura di peccato con 2 argomenti 10 e 0.0001, allora è ok
((smooth sin) 10 0.0001) ==> -0.544021109075966
Se corro questa procedura in modo ricorsivo, allora ha errore
((smooth (smooth sin)) 10 0.0001)
==> procedure expects 2 arguments, given 1: #<promise:temp6>
Quindi, qualcuno può dirmi dove è il mio problema? Grazie in anticipo !!!
PS: questo è parte di esercizio 1,44 in SICP
Soluzione
E 'piuttosto semplice, il risultato di (smooth sin)
è una procedura 2-argomento che diventa la F nel esterna liscia, e F è applicato ad un solo valore.
La soluzione è quella di rendere il risultato di liscio una procedura 1-argomento, invece, allora si può applicare ripetutamente.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow