Because diff is computed with a comprehension which is typed by inference. Thats ok for a concrete type like Float64, but when faced with an abstract type like Real, inference currently says its all too hard and goes for Any. See also https://github.com/JuliaLang/julia/issues/7258.
Cheers Lex On Monday, December 29, 2014 5:29:12 PM UTC+10, [email protected] wrote: > > Would someone be able to explain why `diff()` returns Any when its input > is a vector of `Real` values but returns Float64 when its input is a vector > of `Float64` values? > > julia> diff(Real[1., 2.]) > > 1-element Array{Any,1}: > > 1.0 > > vs > > julia> diff(Float64[1,2]) > > 1-element Array{Float64,1}: > > 1.0 > > > julia> versioninfo() > > Julia Version 0.3.3 > > Commit b24213b* (2014-11-23 20:19 UTC) > > Platform Info: > > System: Darwin (x86_64-apple-darwin14.1.0) > > CPU: Intel(R) Core(TM) i5-4260U CPU @ 1.40GHz > > WORD_SIZE: 64 > > BLAS: libopenblas (DYNAMIC_ARCH NO_AFFINITY Haswell) > > LAPACK: libopenblas > > LIBM: libopenlibm > > LLVM: libLLVM-3.3 > > Thanks >
