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