Comment modéliseriez-vous les macros procédurales Rust?

Oct 21 2020

Dans le langage de programmation Rust, on peut écrire une fonction d'extension de compilateur qui fonctionne sur une arborescence de syntaxe abstraite, modifiant efficacement le code source avant qu'il ne soit converti en instructions machine. En d'autres termes, la fonction macro a une signature

 Abstract Syntax Tree -> Abstract Syntax Tree 

Ces fonctions peuvent-elles être considérées comme des fonctions d'ordre supérieur? Les fonctions d'ordre supérieur utilisent généralement la composition de fonctions pour produire leur sortie, pas la manipulation du code source.

Réponses

2 D.W. Oct 21 2020 at 12:59

Je ne considérerais pas cela comme une fonction d'ordre supérieur. Une fonction d'ordre supérieur prend une fonction comme entrée ou produit une fonction comme sortie. En revanche, il me semble que votre extension de compilateur accepte des données en entrée (l'arbre de syntaxe abstraite) et produit des données sur sa sortie.

Je suppose que vous pourriez considérer l'AST comme la spécification d'une fonction, mais cela me semble exagéré.

Je ne suis pas sûr que le nom que vous y attachez compte beaucoup, du point de vue informatique. Une rose sous n'importe quel autre nom, et tout ça.