myślałem że to będzie działać:Jak zdefiniować makro julia, które definiuje makro?
macro meta_meta(x,y)
:(macro $x(arg) :($($y) + $arg) end)
end
Oczekiwane zachowanie jest, że wywołanie @meta_meta(f,2)
powinna być równoważna macro f(arg) :(2 + $arg) end
Innymi słowy
julia> @meta_meta(f,2)
julia> @f(3)
5
Zamiast uzyskać:
ERROR: syntax: invalid macro definition
Nie jestem pewien, jak postępować. Widzę, że drzewo wyrażeń dla tego makra różni się od tego, które otrzymam, jeśli ręcznie wygeneruję @f i sprawdzę jego drzewo ekspresji, a ja wypróbowałem kilka iteracji @meta_meta, ale nie mogę wymyślić jak zmienić moją definicję na działaj.
jako przykład: https://discourse.julialang.org/t/def-macro-generator-broken-on-master/1096/3? U = chrisrackauckas. Być może potrzebujesz czegoś uciec. –
Dzięki za wskaźnik! To powinno wystarczyć. Wypróbuję to, kiedy będę miał szansę to rozgryźć. – HaberdashPI