Como você modelaria macros procedurais do Rust?
Na linguagem de programação Rust, pode-se escrever uma função de extensão do compilador que funciona na árvore de sintaxe abstrata, modificando efetivamente o código-fonte antes de ser convertido em instruções de máquina. Em outras palavras, a função macro tem assinatura
Abstract Syntax Tree -> Abstract Syntax Tree
Podem ser consideradas funções de ordem superior? Normalmente, as funções de ordem superior usam composição de função para produzir sua saída, não manipulação de código-fonte.
Respostas
Eu não consideraria uma função de ordem superior. Uma função de ordem superior assume uma função como entrada ou produz uma função como sua saída. Em contraste, parece-me que a extensão do compilador está aceitando dados como entrada (a árvore de sintaxe abstrata) e produzindo dados em sua saída.
Suponho que você possa considerar o AST uma especificação de uma função, mas isso parece um exagero para mim.
Não tenho certeza se o nome que você atribui a ele importa muito, do ponto de vista da ciência da computação. Uma rosa com qualquer outro nome e tudo mais.