Question
Je défini la procédure schéma pour revenir une autre procédure avec 2 paramètres:
(define (smooth f)
(λ(x dx)(/ (+ (f (- x dx))
(f x)
(f (+ x dx)))
3.0)))
si je cours cette procédure avec la procédure de péché avec 2 arguments 10 et 0,0001 alors il est ok
((smooth sin) 10 0.0001) ==> -0.544021109075966
si je cours cette procédure récursive, il a erreur
((smooth (smooth sin)) 10 0.0001)
==> procedure expects 2 arguments, given 1: #<promise:temp6>
Alors quelqu'un peut me dire où est mon problème? Merci d'avance !!!
PS: ceci est en dehors de l'exercice 1,44 dans SICP
La solution
Il est assez simple, le résultat de (smooth sin)
est une procédure 2 argument qui devient le F dans la LISSE externe et F est appliquée à une seule valeur.
La solution est de rendre le résultat de la place SMOOTH une procédure 1-argument, vous pouvez l'appliquer à plusieurs reprises.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow