# How would you model Rust procedural macros?

In Rust programming language one can write a compiler extension function that works on abstract syntax tree, effectively modifying source code before it gets converted into machine instructions. In other words, macro function has signature

 Abstract Syntax Tree -> Abstract Syntax Tree


Can these be thought of as higher order functions? Usually higher order functions use function composition to produce their output, not source code manipulation.