I don't know why my previous version won't work,BUT ``` macro nb(f, args...) :($f($(arg...))) end ```
will get the right result. What's the difference between `quote .. end` and `:( .. )` then? :P On Thu, Jan 15, 2015 at 11:06 AM, Isaiah Norton <isaiah.nor...@gmail.com> wrote: > julia> macro nb(f, args...) > arg1 = map(x->:($(esc(x))), args) > :($f($(arg1...))) > end > > julia> @nb print arr > [0.0,0.020100000000000007, ... > > If you haven't used it already, I would suggest to look at macroexpand to > see the expression resulting from each macro (for example, look at why the > previous version didn't work). > > julia> macroexpand( :(@nb print arr) ) > > On Wed, Jan 14, 2015 at 8:32 PM, yi lu <zhiwudazhanjiang...@gmail.com> > wrote: > >> Well, I don't get it very clearly. I learnt that 'esc' changes variable >> names of a local variable in the macro. But I want to reference the global >> variable out of the macro. I have little idea of Lisp macros, so I think I >> still cannot handle this. >> Would you please add more details? >> >> Yi >> >> On Wed, Jan 14, 2015 at 11:37 PM, Isaiah Norton <isaiah.nor...@gmail.com> >> wrote: >> >>> You need to use 'esc' -- see the hygiene part of the metaprog section in >>> the manual. >>> On Jan 14, 2015 8:56 AM, "yi lu" <zhiwudazhanjiang...@gmail.com> wrote: >>> >>>> Hi, >>>> >>>> I am able to write a simple macro to drop brackets. >>>> https://gist.github.com/eccstartup/36637d96355bd5ca8188 >>>> >>>> But there is some problem with this. >>>> >>>> You can see the @nobrace macro that drop brackets of functions. >>>> For example: >>>> ``` >>>> @nobrace map (x->x^2-1) 1:0.01:2 >>>> ``` >>>> get a list of Float numbers. This is fine. >>>> >>>> However, in the macro, we cannot see global variables. >>>> For example: >>>> ``` >>>> arr = @nobrace map (x->x^2-1) 1:0.01:2 >>>> print(arr) >>>> ``` >>>> will print the "arr" list, but >>>> ``` >>>> arr = @nobrace map (x->x^2-1) 1:0.01:2 >>>> @nobrace print arr >>>> ``` >>>> will report "arr not found". >>>> >>>> Is there a remedy? >>>> >>>> >>>> Yours, >>>> Yi >>>> >>> >> >