有没有办法在 Julia 中将函数转换为表达式?

emi*_*422 3 macros metaprogramming julia

我正在尝试创建一个宏,它能够(可能递归地)将函数转换为表达式,以便达到在该函数中应用的操作。

作为可视化:

function sampleFunc(x)
     println(x)
     y = 2x
     return 2y* x
end

@macroIcannotImplement sampleFunc(x)
Run Code Online (Sandbox Code Playgroud)

期望输出:

quote
     println(x)
     y = 2x
     return 2y* x    
end
Run Code Online (Sandbox Code Playgroud)

Julia 是否支持这样的提取,还是我应该开始寻找其他方式?

tho*_*oly 6

是的,使用CodeTracking

julia> using Revise, CodeTracking

julia> function sampleFunc(x)
            println(x)
            y = 2x
            return 2y* x
       end
sampleFunc (generic function with 1 method)

julia> @code_expr sampleFunc(3)
:(function sampleFunc(x)
      #= REPL[2]:1 =#
      #= REPL[2]:2 =#
      println(x)
      #= REPL[2]:3 =#
      y = 2x
      #= REPL[2]:4 =#
      return (2y) * x
  end)
Run Code Online (Sandbox Code Playgroud)