2009-10-01 5 views

Répondre

4

En d'autres termes, vous avez décidé que for a vraiment besoin qu'un seul modèle et que vous voulez écrire quelque chose comme:

(defmacro (for ,i from ,x to ,y step ,body) 
    ; code goes here 
) 

Il n'y a rien intégré au schéma qui fait des macros unique motif plus rapide à écrire. La solution traditionnelle est (surprise!) D'écrire une autre macro.

J'ai utilisé defsubst from Swindle, et le schéma PLT now ships with define-syntax-rule qui fait la même chose. Si vous apprenez des macros, alors écrivez votre propre équivalent define-syntax-rule serait un bon exercice, particulièrement si vous voulez indiquer des mots-clés comme "pour" et "de". Ni defsubst ni define-syntax-rule gérer ces.

+3

Tout est correct, et je peux aussi ajouter qu'écrire une telle macro 'define-synatx-rule' est un cas très simple de macro-that-generate-macros. Mais juste au cas où vous l'auriez manqué, PLT * a * une règle 'define-syntaxe' dans le langage. (BTW, ces "mots parasites" sont appelés "mots-clés", et vous avez raison de dire que la définition commune de "define-syntax-rule" n'a pas de place pour eux - c'est bien, puisque les mots-clés sont habituellement utilisé pour distinguer plusieurs modèles.) –

+0

C'est probablement nouveau depuis la dernière fois que j'ai utilisé PLT. Merci pour la terminologie Je n'utilise pas de mots-clés, donc je ne savais pas comment ils s'appelaient. –

Questions connexes