Вот код:
macro createmod(m)
yy = 51
sym = :z
ex = quote
module $(esc(m))
end
$(esc(m)).eval(quote
x = 3
y = $$(yy)
$$(esc(esc(QuoteNode(sym)))) = 55
end)
end
ex.head = :toplevel
ex
end
@createmod CC
CC.z
Я получил это: ERROR: syntax: invalid syntax (escape (escape (inert z)))
Есть идеи, как мне этого добиться?
Я мог бы сделать это так:
macro createmod(m)
yy = 51
sym = :zz
ex = quote
# create the module
module $(esc(m))
# create variables inside module
const $(esc(sym)) = 55
end
end
ex.head = :toplevel
ex
end
@createmod CC
CC.zz
Но мне все еще интересно, как это можно сделать другим способом.