I've seen a discussion on this somewhere... here it is: https://github.com/JuliaLang/julia/issues/6984, and there's more discussion at https://groups.google.com/forum/#!topic/julia-users/alavN8tRdyI
No built-in solution so far from what I can see, although following the first post there, you could define a type alias for an array that has elements that are all the same Real subtype: typealias RealArray{R<:Real} Array{R} function f(x::RealArray, y::RealArray, z::RealArray) ... On Friday, 26 June 2015 17:46:22 UTC+1, Linus Härenstam-Nielsen wrote: > > Ok, that makes sense. In that case what would be the best way to write a > funcion that accepts several Real arrays (of not necessarily the same > type)? Currently I'm using > > function f{T1,T2,T3 <: Real}(x::Array{T1}, y::Array{T2}, z::Array{T3}) > ... > end > > But that gets messy very quickly if there are many arguments. > > On Friday, June 26, 2015 at 6:00:25 PM UTC+2, Tim Wheeler wrote: >> >> Hello Linus, >> >> This is based on how array types are defined. In general, Vector{subtype} >> is not a subtype of Vector{supertype}. >> Try this: >> >> f{R<:Real}(x::Array{R}) = x >> >> -Tim >> >> On Friday, June 26, 2015 at 8:38:12 AM UTC-7, Linus Härenstam-Nielsen >> wrote: >>> >>> I ran into a problem with types today that I don't know how to interpret. >>> >>> If I define a function according to >>> f(x::Real) = x >>> it returns x as expected as long as the type of x is a subtype of Real. >>> However if I define >>> f(x::Array{Real}) = x >>> it throws MethodError no matter what I pass as argument. For example >>> when I try to pass it an Int array: >>> f([1 2 3; 3 4 5]) >>> ERROR: MethodError: `f` has no method matching f(::Array{Int64,2}) >>> >>> I would expect it to work like >>> f{T<:Real}(x::Array{T}) = x >>> and accept any array of reals. Am I missing something? >>> >>> >>> >>>