2008-11-28 5 views
2

Tout en regardant la section syntax-case dans R6RS, j'ai vu le mot-clé make-variable-transformer, décrit comme une macro d'identifiant. L'exemple donné est très minime, et je ne me demande pas pourquoi c'est nécessaire, ni quels cas d'utilisation l'exigent. Trouver des exemples supplémentaires de son utilisation s'avère également difficile. Vraisemblablement, il rend possible une forme de transformation de la syntaxe, ou plus élégante?Quels sont les avantages du transformateur à variation de phase de R6RS Scheme?

Répondre

2

Après avoir lu http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-13.html#node_sec_12.3 mon opinion est la suivante:

Si mac est un transformateur de syntaxe

(mac foo (bar baz)) remplacerait l'ensemble de-expr avec le résultat de la transformation ce qui pourrait aboutir à rien dire (SOMETHING), alors que (foo mac bar) remplacerait seulement mac résultant dans (foo SOMETHING bar).

Normalement (set! mac 'foo) signalerait une erreur, il semble que le transformateur ne peut pas apparaître sur la gauche d'une expression de jeu, mais si mac est un transformateur variable (set! mac 'foo) aurait lieu appeler mac avec toute la s-expr. Mon intuition me dit que ce serait utile si vous commencez à implémenter des types de données avec des macros.

Questions connexes