This works fine if I quote and interpolate *l*:
julia> function test(plm)
l = []
@iteratelist plm Base.push!(:($l), list[k])
l
end
test (generic function with 1 method)
julia> test(PLM)
3-element Array{Any,1}:
1
2
3
On Friday, December 18, 2015 at 9:02:08 PM UTC-3, Diego Javier Zea wrote:
>
> I defined the macro @iteratelist
> <https://github.com/diegozea/PairwiseListMatrices.jl/blob/master/src/macros.jl#L1-L27>
>
> in PairwiseListMatrices. I used a similar macro in function definitions
> <https://github.com/diegozea/PairwiseListMatrices.jl/blob/master/src/pairwiselistmatrix.jl#L745>
>
> inside that package without problems. However, the same code doesn't work
> for function definitions outside that package, like in the example below.
> Why was *l* expanded as *PairwiseListMatrices.l *? Thanks!
>
>
>
> <https://lh3.googleusercontent.com/-8K2AU8SuRDs/VnScACgeknI/AAAAAAAAOvQ/gbLA6s86P90/s1600/macro.png>
>
> *Code: *
>
> using PairwiseListMatrices
>
> PLM = PairwiseListMatrix([1, 2, 3], false)
>
> function test(plm)
> l = []
> @iteratelist plm Base.push!(l, list[k])
> l
> end
>
> function test_macroexpand(plm)
> l = []
> println( macroexpand( quote @iteratelist plm Base.push!(l, list[k])
> end))
> l
> end
>
> test(PLM)
>
> test_macroexpand(PLM)
>
>
>
>