On Wed, Dec 9, 2015 at 5:18 PM, Erik Schnetter <schnet...@gmail.com> wrote:
> I didn't know about `methodswith(???, true)`. Could that be output by
> default when one is asking for help?

Not unless if there's some good way to filter it. Try
`methodswith(Vector, true)`

>
> -erik
>
> On Wed, Dec 9, 2015 at 5:17 PM, Yichao Yu <yyc1...@gmail.com> wrote:
>>
>> On Wed, Dec 9, 2015 at 5:15 PM, Yichao Yu <yyc1...@gmail.com> wrote:
>> > On Wed, Dec 9, 2015 at 5:12 PM,  <vish...@stanford.edu> wrote:
>> >> 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...
>>
>> And for methods, use methodswith
>>
>> ```
>> julia> methodswith(Expr, true)
>> 6-element Array{Method,1}:
>>  ==(x::Expr, y::Expr) at expr.jl:45
>>  copy(e::Expr) at expr.jl:34
>>  hash(x::Expr, h::UInt64) at hashing.jl:60
>>  print(io::IO,
>> ex::Union{Expr,GlobalRef,GotoNode,LabelNode,LineNumberNode,QuoteNode,SymbolNode,TopNode})
>> at show.jl:290
>>  serialize(s::SerializationState{I<:IO}, ex::Expr) at serialize.jl:227
>>  show(io::IO,
>> ex::Union{Expr,GlobalRef,GotoNode,LabelNode,LineNumberNode,QuoteNode,SymbolNode,TopNode})
>> at show.jl:291
>> ```
>>
>>
>> >>
>> >
>> > ```
>> > help?> Expr
>> > search: Expr export nextprod expanduser expm exp2 exp expm1 exp10
>> > expand exponent
>> >
>> >   No documentation found.
>> >
>> >   Summary:
>> >
>> >   type Expr <: Any
>> >
>> >   Fields:
>> >
>> >   head :: Symbol
>> >   args :: Array{Any,1}
>> >   typ  :: Any
>> > ```
>> >
>> >>
>> >> 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
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>
>
>
>
>
> --
> Erik Schnetter <schnet...@gmail.com>
> http://www.perimeterinstitute.ca/personal/eschnetter/

Reply via email to