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.