2010-03-31 6 views
0

I défini la procédure schéma pour revenir une autre procédure avec 2 paramètres:problème de procédure Schéma

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

si je lance 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 lance 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-il tel l moi où est mon problème? Merci d'avance !!!

PS: ceci est en dehors de l'exercice 1.44 SICP

+1

((lisse ((lisse sin) 10 0,0001)) 10 0,0001) – Diadistis

Répondre

2

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 consiste à remplacer le résultat de SMOOTH par une procédure à 1 argument, puis à l'appliquer de manière répétée.

Questions connexes