Actually, forget what I said about unification, it's not true.
I too am curious about why the field types are not evaluated once the type
parameters are known. Maybe it makes inference about the abstract Foo type
more difficult?
On Wednesday, June 1, 2016 at 6:04:51 PM UTC-4, Cedric St-Jean wrote:
>
> I really doubt that it can be expressed this way, because Julia will do
> pattern matching/unification on the type of `bar`, and it would have to
> know that -1 is the inverse of +1 to unify D+1 with the type of the input
> array. Can you give more context about what you're trying to do? Why can't
> you have `bar::Array{Any, D}`?
>
> You can also put D inside the constructor
>
> type Foo{E}
> bar::Array{Any, E}
> end
> Foo(D::Int) = Foo(Array{Any, D+1}())
>
> Foo(1)
>
> or use typealias
>
> On Wednesday, June 1, 2016 at 2:56:28 PM UTC-4, Robert DJ wrote:
>>
>> I have a custom type with a TypePar denoting a dimension and would like
>> to define the following:
>>
>> type Foo{D}
>> bar::Array{D+1}
>> end
>>
>> However, this does not work. As D is only 1 or 2 it would OK with
>>
>> type Foo{1}
>> bar::Matrix
>> end
>>
>> type Foo{2}
>> bar::Array{3}
>> end
>>
>> but unfortunately this isn't working, either.
>>
>> Can this problem be solved?
>>
>> Thanks!
>>
>