All I mean is that if you write functions that call `firstparam` or 
`secondparam`, julia will be able to infer the return type. That means that in

function foo(mt::MyType)
    T = firstparam(typeof(mt))
    a = Array(T,20)
    # now do something with a
end

julia will generate efficient code in manipulating a. With the version that 
uses 
the parameters field directly, it won't.

In addition to the two methods I showed in the last email, you should also 
define

firstparam(mt::MyType) = firstparam(typeof(mt))
secondparam(mt::MyType) = secondparam(typeof(mt))

and that will make the code above a little nicer.

Best,
--Tim

On Saturday, September 12, 2015 03:27:20 AM Jeffrey Sarnoff wrote:
> pls show me a quick example of using that inferrably
> 
> On Saturday, September 12, 2015 at 6:12:21 AM UTC-4, Tim Holy wrote:
> > A much better way (because it's inferrable):
> > 
> > firstparam{A,B}(::Type{MyType{A,B}}) = A
> > secondparam{A,B}(::Type{MyType{A,B}}) = B
> > 
> > --Tim
> > 
> > On Friday, September 11, 2015 06:40:59 PM Jeffrey Sarnoff wrote:
> > > julia> type MyType{A,B} end
> > > 
> > > julia> ((MyType.parameters)...)
> > > (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