Come modellereste le macro procedurali di Rust?

Oct 21 2020

Nel linguaggio di programmazione Rust si può scrivere una funzione di estensione del compilatore che funzioni su un albero di sintassi astratto, modificando efficacemente il codice sorgente prima che venga convertito in istruzioni macchina. In altre parole, la funzione macro ha la firma

 Abstract Syntax Tree -> Abstract Syntax Tree 

Possono essere pensate come funzioni di ordine superiore? Di solito le funzioni di ordine superiore usano la composizione delle funzioni per produrre il loro output, non la manipolazione del codice sorgente.

Risposte

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

Non la considererei una funzione di ordine superiore. Una funzione di ordine superiore accetta una funzione come input o restituisce una funzione come output. Al contrario, mi sembra che l'estensione del compilatore accetti i dati come input (l'albero della sintassi astratto) e produca dati sul suo output.

Suppongo che potresti considerare AST una specifica di una funzione, ma mi sembra una forzatura.

Non sono sicuro che il nome che attribuisci sia importante, dal punto di vista dell'informatica. Una rosa con qualsiasi altro nome, e tutto il resto.