sorry ok, I see - it's 
Expr.head
and 
Expr.args

Man, I really wish Julia had something like python's help(Expr) to see all 
the methods/fields of a class...

On Tuesday, December 8, 2015 at 8:26:35 PM UTC-8, vis...@stanford.edu wrote:
>
> Situations where the printed form of an expression (i.e, what you'd type 
> into julia REPL, for example) are equivalent aren't "equal" per julia's 
> standards:
>
> Expr(:call, :<, 1, 2) --> :(1 < 2)
> Meta.show_sexpr(:(1 < 2)) --> (:comparison, 1, :<, 2)
> Expr(:call, :<, 1, 2) == :(1 < 2) --> FALSE
>
> I figure that's expected because the s-expressions behind the scenes 
> aren't accurate.
> So the workaround is:
>
> Expr(:call, :<, 1, 2) == :(<(1,2)) --> TRUE
>
> This isn't ideal, but at least there's a way to express the Expr object I 
> want in terms of julia's syntax. 
> Is there another way to make these two semantically equivalent 
> representations actually be equal?
>
> Second - a much weirder problem:
>
> Meta.show_sexpr(:(symbol.x())) --> (:call, (:., :symbol, (:quote, :x)))
>
>
> Ok, so make an expression:
>
> Meta.show_sexpr(Expr(:call, Expr(:., :symbol, Expr(:quote, :x)))) --> (:call, 
> (:., :symbol, (:quote, :x)))
>
>
> Cool. So this time the expression object and the actual julia 
> representation are the exact same.
>
> However:
>
> Expr(:call, Expr(:., :symbol, Expr(:quote, :x))) == :(symbol.x()) --> FALSE
>
>
> And stragely
>
>
> Meta.show_sexpr(Expr(:call, Expr(:., :symbol, Expr(:quote, :x)))) == 
> Meta.show_sexpr(:(symbol.x())) --> TRUE
>
> What is going on!? And how do I get these expressions to agree?
>
>
> Vishesh
>
>
>
>
>
>

Reply via email to