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:  f′(x::Int64) @ Main ~/Code/julia/script.jl:5  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?