We should avoid `eval` and calling functions for code generation, as it is not done statically. [See the discussion here](https://discourse.julialang.org/t/metaprogramming-prefer-functions-with-eval-or-macros/127066/3)