La question me paraît compréhensible, pour ma part:
- Loop est une macro (implémentée à l'aide de letrec, c'est un indice, pas l'essentiel)
- or les macros sont développées (expand en anglais -> d'où le terme expansion) pendant la compilation, avant l'exécution
- donc si j'ai dans mon programme une invocation de la macro Loop sous la forme de:
(let Loop ((i 0))
(when (< i 10)
(display i)
(Loop (+ i 1))))
Comment sera-t-elle développée pendant la compilation? <- c'est le sens de la question.
Pour y répondre, tu dois donc réfléchir à un code équivalent (implémenté avec letrec, encore une fois c'est un indice) qui ne fasse pas appel à une macro.
Partager