Can someone please explain why the following errors?
macro d(np::Integer)
quote
using Distributed
addprocs($np)
@everywhere begin
using Pkg
Pkg.activate(".")
end
end
end
julia> @d 2
ERROR: LoadError: UndefVarError: @everywhere not defined
(I often add the body of the macro as boiler-plate code when I want to parallelize my code, so I was hoping to write a macro to reduce the number of lines of code I have to add.)
If I split it into two macros (one with using Distributed; addprocs($np), and the other with the @everywhere block) it works. It also works if I use using Distributed before calling @d.
I also don’t know why the call to addprocs doesn’t error. If @everywhere isn’t defined, I would expect addprocs to be undefined as well.