This is actually a really good question. I found myself wondering the same thing the other day.
On Monday, February 24, 2014 1:54:59 PM UTC+2, andrew cooke wrote: > > Working on the finite field code I found myself asking "what is a Number?". > > One answer is: > > julia> Base.subtypetree(Number) > (Number,{(Complex{Float16},{}),(Complex{Float32},{}),(Complex{Float64 > },{}),(Complex{T<:Real},{}),(Real,{(FloatingPoint,{(BigFloat,{}),(Float16 > ,{}),(Float32,{}),(Float64,{})}),(Integer,{(BigInt,{}),(Bool,{}),(Char > ,{}),(Signed,{(Int128,{}),(Int16,{}),(Int32,{}),(Int64,{}),(Int8,{})}),( > Unsigned,{(Uint128,{}),(Uint16,{}),(Uint32,{}),(Uint64,{}),(Uint8 > ,{})})}),(MathConst{sym},{}),(Rational{T<:Integer},{})})}) > > but that doesn't help so much. What I really wanted to know is - what > methods are assumed to exist for something that is a subtype of Number? > > And I don't know how to answer that. > > Maybe (I don't think so) Julia needs some kind of concept like abstract > methods, where you can name methods for Number that any subtype must > implement? > > Maybe there needs to be some kind of tool that introspects the code base > and says "90% of subtypes define real and abs"? > > Maybe this has already been discussed or is clearly not an issue? > > Andrew >