I've seen the same, and the answer I got at the JuliaLang gitter channel
was that it could not be inferred because r could be of length 0, and in
that case, the return type could not be inferred. My Julia-fu is too weak
to then explain why the comprehension would be able to infer the return
On Thursday, September 22, 2016 at 9:27:37 PM UTC+2, Stefan Karpinski wrote:
> I see the same, yet:
> julia> r = rand(10^5);
> julia> @time test1(r)
> 0.000246 seconds (7 allocations: 208 bytes)
> julia> @time test2(r)
> 0.001029 seconds (7 allocations: 781.500 KB)
> So test1 is efficient, despite the codewarn output. Not sure what's up.
> On Thu, Sep 22, 2016 at 2:21 PM, Christoph Ortner <christop...@gmail.com
>> I hope that there is something I am missing, or making a mistake in the
>> following example:
>> r = rand(10)
>> test1(r) = sum( t^2 for t in r )
>> test2(r)= sum( [t^2 for t in r] )
>> @code_warntype test1(r) # return type Any is inferred
>> @code_warntype test2(r) # return type Float64 is inferred
>> This caused a problem for me, beyond execution speed: I used a generator
>> to create the elements for a comprehension, since the type was not inferred
>> the zero-element could not be created.
>> Is this a known issue?