In [1]:
ex = :(f(x) = [sqrt(x[1]), 2*x[2]])


Out[1]:
:(f(x) = [sqrt(x[1]),2 * x[2]])

In [2]:
body = ex.args[2]


Out[2]:
:([sqrt(x[1]),2 * x[2]])

In [3]:
eval(body.args[1])


x not defined
while loading In[3], in expression starting on line 1

In [4]:
body.args


Out[4]:
2-element Array{Any,1}:
 :(sqrt(x[1]))
 :(2 * x[2])  

In [7]:
macro split(x)
    @show x
    @show typeof(x)
end

In [8]:
@split f(x)=hello


x => :(f(x) = begin  # In[8], line 1:
            hello
        end)
typeof(x) => Expr
Out[8]:
Expr

In [9]:



@multidim not defined
while loading In[9], in expression starting on line 1

In [86]:
macro multidim(f, x, ex)
    @show f
    @show x
    @show ex
    
        name = symbol(string(f, "1"))

    ex2 = :($(esc(name))($x) = $ex)
    
    
    #name = :($f)
    #     name = :(symbol(:$f), 1)
    
#     ex3 = :($(esc(name))($x) = $ex)
    
    @show ex2
    @show name
    
    Meta.show_sexpr(name)
    
#     @show ex3
    
    ex2

end

In [87]:
@multidim(f, x, [sqrt(x[1]), 2*x[2]])


f => :f
x => :x
ex => :([sqrt(x[1]),2 * x[2]])
ex2 => :(($(Expr(:escape, :f1)))(x) = [sqrt(x[1]),2 * x[2]])
name => :f1
:f1
Out[87]:
f1 (generic function with 1 method)

In [85]:
string(:x,"1")


Out[85]:
"x1"

In [45]:
f([1,2])


Out[45]:
2-element Array{Float64,1}:
 1.0
 4.0

In [28]:
eval(:(f(x) = [sqrt(x[1]),2 * x[2]]))


Out[28]:
f (generic function with 1 method)

In [29]:
f([1,2])


Out[29]:
2-element Array{Float64,1}:
 1.0
 4.0

In [ ]: