Haven't touched Erlang but has an entry level knowledge on Elixir. I often heard how easy it is to write macros on Elixir. Can you elaborate on this?
This makes it easy to generate code on compile time, which is then executed in runtime without any performance penalty.
A large part of Elixir itself is actually implemented as macros. For instance, the "unless" construct:
defmacro unless(condition, do: do_clause, else: else_clause) do
quote do
if(unquote(condition), do: unquote(else_clause), else: unquote(do_clause))
end
end
(code simplified for clarity)