Suppression de l'évaluation

L'un des opérateurs spéciaux (voir section 4.3.2) les plus importants est quote qui permet de supprimer l'évaluation. Cet opérateur prend un seul paramètre et le résultat de l'évaluation de l'expression composée est l'argument passé :

* *read-base*

10
* (quote *read-base*)

*READ-BASE*
* (quote (setf *read-base* 8))

(SETF *READ-BASE* 8)
* *read-base*

10
* (defparameter *expr* (quote (setf *read-base* 8)))

*EXPR*
* *expr*

(SETF *READ-BASE* 8)
* (eval *expr*)

8
* *read-base*

8
*

On remarque ici l'utilisation explicite de la fonction eval. Il est très rare d'en avoir besoin dans un programme. De fait, il est très probable que l'utilisation d'eval indique une erreur grave de conception. Pour la grande majorité des cas où le programmeur serait tenté d'utiliser eval, l'utilisation d'une macro devrait être plus appropriée.

La fonction read convertit automatiquement une expression $E$ précédée du caractère apostrophe (en Anglais : quote) en une expression composée (quote $E$) :

* (quote (this is a test))

(THIS IS A TEST)
* '(this is a test)

(THIS IS A TEST)
* '*read-base*

*READ-BASE*
*

Irene DURAND
2011-10-14