Again, this is specific to `bindSym`. `bindSym` has to check the local context for symbols, and this context isn't available when "evaluating" constant expressions, only "compiling" them, so `bindSym` was originally made to use this context directly when "compiling" them. What `dynamicBindSym` does is it stores the local context when "compiling" them into a closure, then this closure is called when "evaluating" it.
The difference is that compile-time code with variable parameters (including macro code) is only compiled once, and evaluated multiple times. That's why it still needs to be "dynamic".
