Hello,
I have a function called f′ and I want to use a macro called @diff inside the function’s definition:
macro diff(expression)
    return :(2x)
end
f′(x) = @diff x^2
print(f′(10))
Yet once I run this code, this error message is shown:
ERROR: LoadError: UndefVarError: x not defined
Stacktrace:
 [1] f′(x::Int64)
   @ Main ~/Code/julia/script.jl:5
 [2] top-level scope
   @ ~/Code/julia/script.jl:7
in expression starting at /Users/jeroen/Code/julia/script.jl:7
And this is the code that the macro produces (using @macroexpand @diff x^2):
2 * Main.x
I think the problem is that Julia binds the variable x to the main scope, instead of the function scope.
How can I overcome this problem and use macros inside function definitions?
Thank you!