Используйте переменную во вложенной цитате в julia - PullRequest
0 голосов
/ 28 июня 2019

Вот код:

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

Но мне все еще интересно, как это можно сделать другим способом.

...