the declaration `const A = (2,3)` is not part of the macro environment.
values are only seen by functions. whereas macros only see the surface
syntax. so the arguments to `@f` are the literals `1` and `:(A...)`

On Wed Jan 07 2015 at 10:04:26 PM Chi-wei Wang <[email protected]> wrote:

> Can ... be applied on macro? I tried this but it didn't compile.
> macro f(a,b,c)
>   return :($a+$b+$c)
> end
> const A = (2,3)
> @f(1, A...)
>
>
>
> Chi-wei Wang於 2015年1月7日星期三UTC-8下午6時45分14秒寫道:
>
>> It works! I missed the varargs section in the doc. Thanks!
>>
>> Greg Plowman於 2015年1月7日星期三UTC-8下午5時26分02秒寫道:
>>>
>>>
>>> Would the following work?
>>>
>>> const A = (1,2,3)
>>> f(x::Int, y::Int, z::Int) = x+y+z
>>> f(A...)
>>>
>>>
>>> http://docs.julialang.org/en/release-0.3/manual/functions/#
>>> varargs-functions
>>>
>>>
>>> On Thursday, January 8, 2015 11:14:23 AM UTC+11, Chi-wei Wang wrote:
>>>
>>>> Hi, everyone. I am trying to achieve the effect like the following C
>>>> code:
>>>>
>>>> #define A 1,2,3
>>>> void f(int x, int y, int z) {
>>>> }
>>>>
>>>> f(A);
>>>>
>>>> Yet the macro in Julia always returns a single expression. Is it
>>>> possible to do this?
>>>>
>>>

Reply via email to