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 
>
>

Reply via email to