Macros run very early in the compilers process when there is no information about how the program might execute. The inputs to a macro are, therefore, simply symbols and expressions – the textual tokens that make up a program. Given that a lot of Julia's powers come from its type system, it may be useful to have something like macros – code that generates code – at a point where the compiler has inferred the types of the variables and arguments in the program. Generated functions (also known as staged functions) fulfill this need.
Generated functions
Using generated functions
Declaring a generated function is simple. Instead of the usual function keyword, generated functions are declared with the appropriately...