Oops typo in last responce, I meant.
julia> @horner(.75, c...)
ERROR: unsupported or misplaced expression ...
julia>
On Friday, August 29, 2014 9:00:10 PM UTC-7, Don MacMillen wrote:
>
> Ah, well that was perhaps a bad example. My understanding was the
> you could interpolate an interable. Consider then the horner macro
>
> macro horner(x, p...)
> ex = esc(p[end])
> for i = length(p)-1:-1:1
> ex = :($(esc(p[i])) + t * $ex)
> end
> Expr(:block, :(t = $(esc(x))), ex)
> end
>
> if I have a vector of constant coefficients, shouldn't I be able to splice
> them into the macro call?
>
> julia> c = [1.:5]
> 5-element Array{Float64,1}:
> 1.0
> 2.0
> 3.0
> 4.0
> 5.0
>
> julia> @horner(.x, c...)
> ERROR: syntax: invalid identifier name "."
>
>
>
> On Friday, August 29, 2014 8:45:00 PM UTC-7, Jameson wrote:
>>
>> that would be utterly pointless, since you can already just write:
>> @mymacro(“aaa”, “bbb”, “ccc”)
>>
>> if you are intending to look at values, you should be using a function. a
>> macro is a function but it's also special in that it takes the quoted AST
>> of it’s arguments during parsing, not their values during runtime
>>
>> observe when b... is getting printed:
>>
>> julia> macro mymacro(a,b)
>> println(b)
>> end
>>
>> julia> f() = @mymacro(a,b...)
>> b...
>> f (generic function with 1 method)
>>
>> julia> f()
>>
>>
>>
>>
>> On Fri, Aug 29, 2014 at 9:45 PM, Don MacMillen <[email protected]>
>> wrote:
>>
>>> I meant something like this
>>>
>>> julia> macro mymacro(a,b,c)
>>> println(c)
>>> end
>>>
>>> julia> @mymacro("aaa", ("bbb", "ccc")...)
>>> ERROR: wrong number of arguments
>>>
>>> which works fine for functions
>>>
>>> julia> function myfunc(a,b,c)
>>> println(c)
>>> end
>>> myfunc (generic function with 1 method)
>>>
>>> julia> myfunc("aaa", ("bbb", "ccc")...)
>>> ccc
>>>
>>>
>>>
>>>
>>> On Friday, August 29, 2014 6:02:45 PM UTC-7, Jameson wrote:
>>>
>>>> splicing into a macro works for me:
>>>>
>>>> julia> macro mymacro(a,b)
>>>> println(b)
>>>> end
>>>>
>>>> julia> @mymacro(x, y...)
>>>> y...
>>>>
>>>>
>>>>
>>>>
>>>> On Fri, Aug 29, 2014 at 8:57 PM, Don MacMillen <[email protected]>
>>>> wrote:
>>>>
>>>>> The slides are great. Many thanks for sharing.
>>>>>
>>>>> I do have a question about macros that maybe you can answer. In your
>>>>> nb on
>>>>> metaprogramming you have the horner macro listed and it uses a
>>>>> temporary
>>>>> variable t. But this macro can be written without using a temporary
>>>>> variable.
>>>>> It turns out to be slower (the no temp version) if we are computing a
>>>>> bunch of
>>>>> polynomials with the same coefficients, but is a tiny bit faster if
>>>>> the coefficients
>>>>> are always changing. So are the Expr's cached? Or is something else
>>>>> going on?
>>>>>
>>>>> Also (OK I have two questions) it looks like we cannot splice into a
>>>>> macro call?
>>>>> Ie @mymacro(x, y...) doesn't work?
>>>>>
>>>>> Thanks again.
>>>>>
>>>>> Don
>>>>>
>>>>>
>>>>> On Friday, August 29, 2014 4:08:44 AM UTC-7, Steven G. Johnson wrote:
>>>>>>
>>>>>> I just gave a talk on Julia at EuroSciPy, and managed to escape
>>>>>> alive. :-)
>>>>>>
>>>>>> I think they will post a video at some point, but in the meantime the
>>>>>> slides and IJulia notebooks are posted at:
>>>>>>
>>>>>> https://github.com/stevengj/Julia-EuroSciPy14
>>>>>>
>>>>>> --SGJ
>>>>>>
>>>>>
>>>>
>>