Hi, I have a situation that looks a bit like this:

module A
function foo end
end

module B
import A: foo
macro define_foo(typ, value)
    :(foo(::$(esc(typ))) = $(esc(value)))
end
end

module C
using B: @define_foo
@define_foo Int 19
end

A.foo(20)

In other words, A is defining a function foo, B defines a macro to define 
methods of foo, and C uses the macro. This looks like it should work, but 
it doesn't, because hygiene takes over and `foo` gets replaced with a 
gensym in its expansion, since it's on the left-hand-side of an equality. 
Is there any way around this?

Reply via email to