Suppose I want to build a composite type
type X{A<:AbstractArray}
   list::Vector{A}
   individual::A
end

Now, al the elements of the list should be of some concrete type of 
AbstractArray{T,N}, whereas individual is required to be of the same 
concrete type of AbstractArray, have the same T, but can have a different 
N'. So if all the elements in the list are Float64 Arrays, then so should 
be individual. For AbstractArray this is less of an issue, since there are 
not many concrete types with arbitrary N. In my code, it is not actually 
the AbstractArray hierarchy that I am using, but some other hierarchy with 
several concrete types.

So I was thinking of writing an outer constructor that accepts a general 
list::Vector, does several consistency check, and tries to determine the 
concrete subtype, but without fixing the N. 

Op zaterdag 2 augustus 2014 19:06:02 UTC+2 schreef Leah Hanson:
>
> T{P1,P2,P3} is a family of types; each member specifies all three type 
> parameters. There are no "super type" relationships within the family of T 
> types; they are just all members of the same family (think "set") of types.
>
> Could you explain what you're trying to achieve? I don't think that making 
> a type with only 2 of it's three parameters defined makes sense, so maybe 
> we can find another way to achieve the same goal.
>
> -- Leah
>
>
> On Sat, Aug 2, 2014 at 6:37 AM, Jutho <juthoh...@gmail.com <javascript:>> 
> wrote:
>
>> Suppose I have some type T{P1,P2,P3} depending some parameters. I don't 
>> know which type exactly, except that it originates from a type hierarchy 
>> which has 3 parameters. What is the best way to construct, given e.g. a 
>> variable of type T{P1,P2,P3} with specific values for P1, P2, P3, to 
>> construct the 'super' type T{P1,P2}. If TT = T{Float64,Float64,Float64} 
>> then I know I could do  TT.parameters = (TT.parameters[1], 
>> TT.parameters[2], TypeVar(P3) ). But it turns out that is not yet 
>> completely identical to T{Float64,Float64}, although TT==T{Float64,Float64} 
>> and TT===T{Float64,Float64} evaluate to true. However, not all fields of TT 
>> seem to be identical to those of T{Float64,Float64}. What is the 
>> recommended strategy ? Is there a specific method for doing this?
>>
>>
>

Reply via email to