Pregunta

I define el procedimiento Esquema para volver otro procedimiento con 2 parámetros:

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

si i ejecutar este procedimiento con el procedimiento de pecado con 2 argumentos 10 y 0,0001 entonces es ok

  ((smooth sin) 10 0.0001) ==> -0.544021109075966

Si me quedo este procedimiento de forma recursiva, entonces tiene errores

((smooth (smooth sin)) 10 0.0001)
==> procedure expects 2 arguments, given 1: #<promise:temp6>

Entonces, ¿puede alguien decirme dónde está mi problema? Gracias de antemano !!!

PD: esto es, aparte de ejercicio en 1,44 SICP

¿Fue útil?

Solución

Es bastante simple, el resultado de (smooth sin) es un procedimiento 2-argumento que se convierte en el F en el exterior lisa, y F se aplica a un solo valor.

La solución es hacer que el resultado de un procedimiento LISA 1-argumento en su lugar, a continuación, se puede aplicar en varias ocasiones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top