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".

Reply via email to