very clear, now.
-- thanks, Jeffrey
On Saturday, September 12, 2015 at 6:48:16 AM UTC-4, Tim Holy wrote:
>
> The problem with this approach:
>
> julia> function foo(mt::MyType)
> T = mt.parameters[1]
> a = Array(T, 5)
> a[3] = 7
> a
> end
> foo (generic function with 1 method)
>
> julia> @code_warntype foo(MyType{Int,Float64}())
> Variables:
> mt::MyType{Int64,Float64}
> T::Union{}
> a::Union{}
>
> Body:
> begin # none, line 2:
> T = (Main.getindex)((top(getfield))
> (mt::MyType{Int64,Float64},:parameters)::Union{},1)::Union{} # none, line
> 3:
> a = call(Main.Array,T::Union{},5)::Union{} # none, line 4:
> (Main.setindex!)(a::Union{},7,3)::Union{} # none, line 5:
> return a::Union{}
> end::Union{}
>
>
> Those Union{}s will kill performance.
>
> --Tim
>
> On Friday, September 11, 2015 12:54:12 PM David Gold wrote:
> > I'm not convinced it's more Julian to use such a helper function, since
> it
> > will needlessly compile a different method for each distinct set of
> > parameters. Directly accessing the `parameter` field of the type in
> > question avoids this.
> >
> > On Friday, September 11, 2015 at 12:30:16 PM UTC-7, Josh Langsfeld
> wrote:
> > > You can access the 'parameters' field of a type instance object. But
> the
> > > standard Julian way to get type parameters is to just define a helper
> > > function:
> > >
> > > typeparams{A,B}(::Type{T{A,B}}) = A,B
> > >
> > > On Friday, September 11, 2015 at 3:20:17 PM UTC-4, Erik Schnetter
> wrote:
> > >> Is there a function in Julia that allows accessing the parameters of
> a
> > >> type?
> > >>
> > >> For example, if I have
> > >>
> > >> type T{A,B} end
> > >>
> > >> then I'd like a way to convert `T{Int, Char}` to `(Int, Char)`.
> > >>
> > >> In other words, is there a way to get at the contents of `DataType`
> > >> objects?
> > >>
> > >> Thanks,
> > >> -erik
>
>