El domingo, 14 de septiembre de 2014 14:28:47 UTC-5, Zouhair Mahboubi escribió: > > 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 >
I'm glad you find the tutorial useful! But it's certainly far from perfect, and certainly needs some modifications, which I will be happy to implement if you send a Pull Request! > > 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) > > <div style="position: absolute; height: 30px; w > ...