You can do something like this: C:\Users\Ismael λ julia5 _ _ _ _(_)_ | By greedy hackers for greedy hackers. (_) | (_) (_) | Documentation: http://docs.julialang.org _ _ _| |_ __ _ | Type "?help" for help. | | | | | | |/ _' | | | | |_| | | | (_| | | Version 0.5.0 (2016-09-19 18:14 UTC) _/ |\__'_|_|_|\__'_| | Official http://julialang.org/ release |__/ | x86_64-w64-mingw32 julia> Base.sum{T<:Real, S<:Real}(::Type{T}, xs::Range{S})::T = sum(xs) julia> r = 1:100; sum(r), sum(Int32, r), sum(Rational{Int16}, r), sum(Complex{BigInt}, r) (5050,5050,5050//1,5050 + 0im) julia> for T ∈ (Int32, Rational{Int16}, Complex{BigInt}) @assert sum(T, 1:100) |> typeof == T end julia>
El lunes, 17 de octubre de 2016, 8:19:51 (UTC-5), Ángel de Vicente escribió: > > Hi, > > probably a very basic question, but I'm just starting to play around > with Julia types. > > I was hoping to improve the performance of a little program I wrote, so > I decided to try Int32 integers instead of the default Int64, but if I > try to use sum, it seems that it is expecting Int64 and the result is > Int64, defeating the purpose of working with Int32 and actually making > the code much slower than the naive version. > > ,---- > | julia> typeof(sum([i for i in Int32(1):Int32(100)])) > > | > | Int64 > `---- > > Do I have to write down my own Int32::sum function? I assume I'm missing > something quite obvious? > > Thanks, > -- > Ángel de Vicente > http://www.iac.es/galeria/angelv/ >