The following code loops over a Dict: function test_paircvt1() d = Dict(1=>5.5, 3=>-2.2) s1 = 0 s2 = 0.0 for (k,v) in d s1 += k s2 += v end s1, s2 end Two issues to ask about:
(1) Since eltype(d)==Pair{Int,Float64}, Julia is automatically converting Pair{Int,Float64} to Tuple{Int,Float64}. How is this done? I looked for the appropriate convert() method but couldn't find it. (2) I ran @code_warntype on the above segment and found something worrisome: the compiler apparently thinks that both k and v are of type Union{Int,Float64}. Why can't it infer the correct types? Is there a performance loss from the compiler's inability to know the correct types? The reason I ask is that I have developed SortedDict for the DataStructures.jl package, and currently eltype{SortedDict{K,V}) is defined to be Tuple{K,V} rather than Pair{K,V} so it is incompatible with Dict. I'm trying to understand the relevant issues in order to fix this. I am running Julia 0.4, 15-day-old master. Thanks, Steve Vavasis