For a very long time, I had a hard time trying to understand how macros work in Elixir. Since I don’t have any Lisp background, that’s a whole new concept for me.
But yesterday, after reading the relevant section in Elixir’s getting started guild, I suddenly realised how quote
and unquote
work. First of all, an Elixir expression is internally represented as a tuple with three elements, which is Elixir’s version of the Abstract Syntax Tree (AST). quote
can give you the AST representation of a piece of code, so that you can manipulate later. unquote
only works inside quote
and it can evaluate an expression and then inject the resulting value into the AST. quote
and unquote
are probably the most important building blocks of macros in Elixir.
Leave a comment