Seguinte: Escrita de Macros Acima: Macros Anterior: Macros
Índice remissivo

Avaliação de Macros

A utilização de uma macro implica duas avaliações. Na primeira, a macro produz uma expressão Lisp a partir dos seus argumentos, que se designa a expansão da macro. Esta expressão é então avaliada uma segunda vez para produzir o valor final. A título de exemplo, se definirmos o if como uma macro que expande para um cond e avaliarmos a expressão (if (> 3 4) (+ 1 2) (- 5 2)), a primeira avaliação deverá produzir a expressão (cond ((> 3 4) (+ 1 2)) (t (- 5 2))), que será avaliada segunda vez para determinar o seu valor.

Note-se que, neste exemplo, se a forma cond fosse, também ela, uma macro, o processo era aplicado recursivamente até que não surgisse mais nenhuma macro. Nessa altura, o Lisp usava a regra usual de avaliação para determinar o valor final da expressão



Copyright António Leitão, 1995