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

È stato utile?

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
scroll top