Thank you for the pointers: I had not seen these issues.

S.

On Tuesday, 2 February 2016 09:11:32 UTC, Mauro wrote:
>
> > For the purposes of readability, is there any syntax by which I can 
> avoid 
> > explicit parameterisation of the function? I am thinking of something 
> like 
> > this: 
> > 
> > function fun(arr::Array{<:Type3, 1}) 
> > end 
>
> No, there is none but it has been discussed 
> https://github.com/JuliaLang/julia/issues/6984.  But function signatures 
> may change quite a bit in the near future anyway, see for instance: 
> https://github.com/JuliaLang/julia/issues/11310#issuecomment-170421099 
>
> > S. 
> > 
> > On Tuesday, 2 February 2016 06:27:10 UTC, Mauro wrote: 
> >> 
> >> On Mon, 2016-02-01 at 18:29, Samuel Powell <s...@samuelpowell.co.uk 
> >> <javascript:>> wrote: 
> >> > Hi, 
> >> > 
> >> > Consider the following: 
> >> > 
> >> > abstract TypeA 
> >> > 
> >> > type Type1 <: TypeA 
> >> > end 
> >> > 
> >> > type Type2 <: TypeA 
> >> > end 
> >> > 
> >> > type Type3{T<:TypeA} 
> >> > prof::T 
> >> > end 
> >> > 
> >> > function fun(arr::Array{Type3, 1}) 
> >> > end 
> >> > 
> >> > t1 = Type1() 
> >> > t2 = Type2() 
> >> > 
> >> > t3_1 = Type3(t1) 
> >> > t3_2 = Type3(t2) 
> >> > 
> >> > fun([t3_1; t3_2]) # This is fine 
> >> > fun([t3_1; t3_1]) # This fails with a no method error 
> >> > fun([t3_2; t3_2]) # This fails with a no method error 
> >> 
> >> This is because of invariance (search the doc or julia-users for it): 
> >> 
> >> julia> Array{Type3{Type1}}<:Array{Type3} 
> >> false 
> >> 
> >> This works: 
> >> 
> >> julia> function fun{T<:Type3}(arr::Array{T, 1}) 
> >>        end 
> >> fun (generic function with 2 methods) 
> >> 
> >> julia> fun([t3_1; t3_1]) 
> >> 
>

Reply via email to