¿Cómo modelaría las macros de procedimiento de Rust?
En el lenguaje de programación Rust, se puede escribir una función de extensión del compilador que funcione en un árbol de sintaxis abstracto, modificando efectivamente el código fuente antes de que se convierta en instrucciones de máquina. En otras palabras, la función macro tiene firma
Abstract Syntax Tree -> Abstract Syntax Tree
¿Pueden considerarse funciones de orden superior? Por lo general, las funciones de orden superior utilizan la composición de funciones para producir su salida, no la manipulación del código fuente.
Respuestas
No lo consideraría una función de orden superior. Una función de orden superior toma una función como entrada o produce una función como salida. Por el contrario, me parece que la extensión del compilador acepta datos como entrada (el árbol de sintaxis abstracta) y produce datos en su salida.
Supongo que podría considerar el AST como una especificación de una función, pero eso me parece exagerado.
No estoy seguro de que el nombre que le asignes importe mucho, desde la perspectiva de la informática. Una rosa con cualquier otro nombre y todo eso.