next up previous contents index
Next: Ce qu'il faut retenir Up: Premiers pas Previous: Premiers pas...   Contents   Index



Ordre d'évaluation de Scheme

D'après la section précédente, lorsque l'interprète évalue une application, il évalue en premier les composantes de cette application, c'est-à-dire la fonction, puis les arguments. Avec ces résultats intermédiaires, il effectue alors l'application proprement dite : on dit que Scheme est en mode applicatif (évaluation préalable des arguments). D'autres langages sont dit en mode normal car ils n'évaluent pas les arguments au préalable. Les langages en mode normal sont aussi appelés langages paresseux, car ils n'effectuent les évaluations que lorsque c'est nécessaire.

Considérons par exemple l'écriture suivante :

Osm> (if (and #t #t)
       (somme 1 2)
       (somme 3 4))
  => argument 1 = 1
     argument 2 = 2
     3

Nous constatons que tous les calculs intermédiaires ont été effectués, à savoir (and #t #t) qui retourne #t, (somme 1 2) et (somme 3 4). Ceci est conforme à ce que nous attendions, car Scheme est en mode applicatif, c'est-à-dire qu'il évalue les arguments au préalable.

Mais nous constatons aussi que le calcul de (somme 3 4) aurait pu être évité parce que son résultat n'est pas utilisé. Un langage en mode normal, ce qui signifie qu'il n'effectue les évaluations que lorsque cela est nécessaire ; dans cet exemple, il n'aurait évalué que (and #t #t) et (somme 1 2).


next up previous contents index
Next: Ce qu'il faut retenir Up: Premiers pas Previous: Premiers pas...   Contents   Index
© 1993 to 2001 Erian Concept