Thanks Stefan, esc does the trick :)
I'll have to find a better way to copy/paste from ipython notebookds.

creating pull request in the scipy_2014_julia :)



On Sunday, September 14, 2014 5:13:41 PM UTC-7, David P. Sanders wrote:
>
>
>
> 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
>> ...
>
>

Reply via email to