Meta programming in Erlang by Max Nordlund

March 25, 2021

Elixir isn’t the only one to have powerful compile time transformations. I’ll look at how preprocessing is done in Erlang, what parse transforms are, and a bit about hot code reloading (which Elixir developers also cause).

Meta programming in Erlang: A comprehensive overview

Max Nordlund, in his captivating presentation on “Meta Programming in Erlang,” offers a deep dive into the realm of meta programming, shedding light on Erlang‘s unique approach compared to traditional languages like C. Through insightful demonstrations and comparisons, Max unveils the power and nuances of Erlang’s meta programming capabilities, paving the way for enhanced code flexibility and efficiency.


The token-level preprocessor

Max initiates the presentation by contrasting Erlang’s token-level preprocessor with the text-level preprocessor utilized in C. This distinction lays the groundwork for understanding the advantages and drawbacks associated with Erlang’s meta programming paradigm. Through a simple yet illustrative example of the “define” macro, Max showcases Erlang’s prowess in defining constants and crafting versatile logging macros.


Navigating macro hygiene

A pivotal aspect of Erlang’s meta programming landscape, Max delves into the concept of macro hygiene. Unraveling the intricacies of non-hygienic macros, he elucidates how variables within macros can lead to unintended consequences and proposes strategies to mitigate such issues. By examining Erlang’s assert macro within the context of OTP, Nordlund underscores the importance of macro hygiene in ensuring code reliability and robustness.


Empowering with parse transforms

As the presentation progresses, Max unveils the transformative potential of parse transforms in Erlang meta programming. Through real-world examples, including the application of parse transforms in production environments, he elucidates how these powerful tools facilitate code generation, error handling, and advanced feature implementation. The integration of libraries like Merlin amplifies Erlang’s meta programming capabilities, offering pattern matching on syntax trees and streamlined transformation processes.


Unleashing meta programming techniques

Max ventures into the realm of meta programming techniques, exploring diverse strategies to achieve desired code outcomes. From leveraging list comprehensions to emulate Elixir‘s “with” statement, to crafting pattern matching constructs reminiscent of monads, he unveils a plethora of techniques to enhance code expressiveness and functionality. Despite the potential for complexity, Max emphasizes the importance of readability and documentation, ensuring clarity and comprehension.


Reflections and future directions

As Max concludes his presentation, he reflects on the learning journey and the experiences garnered through meet-ups and presentations. From the thrill of sharing knowledge to the nerves of public speaking, he encapsulates the dynamic nature of community engagement in the tech sphere. Looking ahead, Max hints at upcoming endeavors and invites fellow enthusiasts to embark on the meta programming journey in Erlang.



Max Nordlund’s exploration of meta programming in Erlang transcends mere syntax and semantics, offering a profound glimpse into the art and science of code transformation. Through insightful demonstrations and reflections, he empowers developers to embrace Erlang’s meta programming arsenal, fostering innovation and efficiency in software development. As the journey continues, Nordlund’s insights serve as guiding lights, illuminating pathways to enhanced code flexibility and reliability in the ever-evolving landscape of programming.


Additional resources

Check out more from the MeetUp Func Prog Sweden. Func Prog Sweden is the community for anyone interested in functional programming. At the MeetUps the community explore different functional languages like Erlang, Elixir, Haskell, Scala, Clojure, OCaml, F# and more.