New Julia user here :) Following the scipy/julia tutorial by D. Sanders and playing around with Macros http://nbviewer.ipython.org/github/dpsanders/scipy_2014_julia/blob/master/Metaprogramming.ipynb
He has in there an example of macros. I was playing around with that and I ran into a case where I don't understand why the expanded code ends up introducing what seems to be a local variable. And this depends solely on whether `expr2` contains `i += 1` or `i = i + 1`. Can someone take the time to explain why i one case the macro expansion introduces a local variable? And how would one get around that in this case? Thanks, -z In [111]: macro until(expr1, expr2) quote #:( while !($expr1) # code interpolation $expr2 end #) end end In [122]: expr1 = quote i = 0 @until i==10 begin print(i) i += 1 end end; expr2 = quote i = 0 @until i==10 begin print(i) i = i + 1 end end; In [123]: eval(expr1) 0123456789 In [124]: eval(expr2) i not defined while loading In[124], in expression starting on line 1 in anonymous at In[122]:4 In [125]: macroexpand(expr1) Out[125]: quote # In[122], line 3: i = 0 # line 4: begin # In[111], line 4: while !(i == 10) # line 5: begin # In[122], line 5: print(i) # line 6: i += 1 end end end end In [126]: macroexpand(expr2) Out[126]: quote # In[122], line 11: i = 0 # line 12: begin # In[111], line 4: while !(#3677#i == 10) # line 5: begin # In[122], line 13: print(#3677#i) # line 14: #3677#i = #3677#i + 1 end end end end