> Why not use dispatch instead? Because subtyping isn't powerful enough for all needs. For example:
julia> using Unitful julia> const mm = u"mm" mm julia> isa(3.2mm, AbstractFloat) false You'd probably like to use the fancy logic of `FloatRange` if you're constructing a range `3.2mm:0.1mm:4.8mm`, so the solution is to dispatch on a trait that indicates that arithmetic isn't exact (which is what really is going on inside that code anyway---who cares what kind of number type it is). Best, --Tim On Tue, Oct 25, 2016 at 12:55 PM, Ismael Venegas Castelló < ismael.vc1...@gmail.com> wrote: > Why not use dispatch instead? > > isexact(::Integer) = true > isexact(::Rational) = true > isexact(x::Complex) = isexact(x.re) > isexact(::Any) = false