In the concept of homoiconicity, code is data and data is code. As in all other Lisp-like languages, this gives us access to the full extent of the language to write code-generation routines called macros. As if by magic, macros allow us to extend the language to suit our needs by creating exciting functionalities that can be seen as core functions. It’s also a way of doing metaprogramming in the language itself.

Get hands-on with 1200+ tech skills courses.