Lisp at 2. L'évaluation d'un expression Lisp

Home
Up
Previous
Next

A toute expression Lisp bien formée correspond une valeur; le calcul de la valeur d'une expression s'appelle l'évaluation d'une expression (en général on utilise le mot forme pour désigner une expression Lisp correcte; on parle de la valeur renvoyée par une forme).

Supposons que nous soyons devant la console d'un ordinateur et qu'un interpréteur Lisp soit prêt à interagir; introduisons à l'aide du clavier l'expression (la forme) suivante :

(+ 2 3)

L'interpréteur Lisp affichera la réponse "5" à l'écran (le résultat de l'évaluation de cette expression). Dans la suite, ce type d'interaction sera représenté comme ceci :

(+ 2 3)
=> 5

Remarque

Ceci correspond à un cycle de ce qui est appelé la boucle READ-EVAL-PRINT de l'interpréteur Lisp :

1. READ : lecture de l'expression,

2. EVAL : évaluation de l'expression,

3. PRINT : impression d'un résultat (à l'écran).

2.1. L'évaluation d'un atome

Certains atomes s'évaluent à eux-mêmes; c'est le cas des atomes numériques :

23.5
=> 23.5

De même, les 2 symboles spéciaux T et NIL (les 2 valeurs de vérité, vrai et faux):

NIL
=> NIL

T
=> T

Une valeur (une donnée) peut être associée à un atome symbolique (ou symbole; voir ci-dessous, le paragraphe 4, l'opérateur d'affectation). L'évaluation d'un symbole produit la valeur associée (s'il n'y a pas de valeur associée, l'évaluation d'un symbole produit une erreur):

Vitesse
=> 60

2.2. L'évaluation d'une liste

Quand l'évaluateur évalue une liste, il "s'attend" à trouver un opérateur - autrement dit une fonction - en tête de liste (le premier élément de la liste). L'opérateur est suivi de zéro ou plusieurs arguments. Cet opérateur est généralement un symbole auquel est associée une valeur fonctionnelle (ou procédure, c'est-à-dire la spécification pas à pas de ce qu'il y a à faire). Ainsi dans l'évaluation :

(+ 1 2 3)
=> 6

L'opérateur est le symbole + auquel est associée la procédure d'addition. Il est suivi de trois arguments.

Voici une description plus détaillée du processus d'évaluation d'une liste :

  1. retrouver la procédure associée au premier élément de la liste;
  2. évaluer chacun des éléments restants de la liste (un élément de liste étant une expression, soit un atome ou une liste);
  3. appliquer la procédure trouvée en 1 aux valeurs trouvées en 2.

On voit que ce processus est récursif; ainsi dans l'évaluation de

(+ 12.5 (* 2.5 2))

Les étapes sont :

1. retrouver la procédure associée au symbole +

2. évaluer l'argument 12.5, soit :

12.5 => 12.5

3. évaluer l'argument (* 2.5 2), soit :

12.5 => 12.5

3.1. retrouver la procédure associée au symbole *

3.2. évaluation du 1er argument

2.5 => 2.5

3.3. évaluation du 2ème argument

2 => 2

3.4. l'application de la procédure * aux deux arguments donne 5

4. appliquer la procédure + aux valeurs 12.5 et 5, soit 17.5.

En résumé, la règle générale et complète de l'évaluation d'une expression (d'une forme) peut s'écrire :

1. si l'expression est un atome, renvoyer sa valeur

2. si l'expression est une liste :

2.1. retrouver la procédure associée au premier élément de la liste

2.2. évaluer chacun des éléments restants de la liste (un élément de liste étant une expression, soit un atome ou une liste)

2.3. appliquer la procédure trouvée en 2.1. aux valeurs trouvées en 2.2.

Home    Previous    Up    Next
contact
site map
Last update : 26/12/2001