Macros

Si le premier élément de la liste n'est ni le nom d'une fonction, ni celui d'un opérateur, mais celui d'une macro, alors une règle très particulière est appliquée. En fait, une macro est une fonction Common Lisp dont le but est de transformer l'expression. L'expression transformée sera ensuite évaluée à sa place. Les macros sont présentées en détail dans le chapitre 14.

Un grand nombre de macros sont prédéfinies en Common Lisp. Pour le programmeur, il n'y a pas de véritable différence entre les opérateurs spéciaux et les macros prédéfinies : chacune nécessite l'apprentissage de sa règle spécifique d'évaluation.

Certains opérateurs spéciaux ne sont même pratiquement plus utilisés. Une macro est utilisée à la place. C'est le cas notamment de l'opérateur setq pour l'affectation de variables. Aujourd'hui, les programmeurs Common Lisp utilisent plutôt la macro setf qui a le même effet sur les variables, mais qui permet l'affectation d'autres types de places (en particulier les éléments d'un tableau ou d'une table de hachage).



Irene DURAND
2011-10-14