If you look at my lib code, you’ll see that in its first version (0.1.0) it simply relied on the vanilla macros to expand the def assign_* and friends. The problem with that approach was that it could only take a list of atoms and not a module attribute (to which a list of atoms is assigned) because the module attribute was not resolvable at the time of the macro expansion. The __before_compile__/1 approach that was suggested by @kip solved this (as shown in the version 0.2.0) because at the time it expands it can resolve the module attributes, hence the necessary refactoring.






















