Okay. I think I did not correctly understand the const declaration used in 
the manual.
At the moment, and for my purposes, the map() function is the shorter 
alternative.


On Wednesday, May 7, 2014 4:23:41 PM UTC+2, Kevin Squire wrote:
>
> If you declare `xs` as constant, the compiler knows that its type won't 
> change, and can properly do inference.
>
> julia> function runge(x::Number)
>            1 / (1 + 5 * x^2)
>        end
> runge (generic function with 1 method)
>
> julia> const xs = linspace(-1.0, 1.0);
>
> julia> [runge(x) for x = xs]
> 100-element Array{Float64,1}:
>  0.166667
>  0.172413
>  ⋮       
>  0.17844 
>  0.172413
>  0.166667
>
>
> It also works without const in a function, because again, the compiler can 
> determine that the type of xs won't change:
>
> julia> function testfunc()
>           xs = linspace(-1.0, 1.0)
>           [runge(x) for x = xs]
>        end
> testfunc (generic function with 1 method)
>
> julia> testfunc()
> 100-element Array{Float64,1}:
>  0.166667
>  0.172413
>  0.17844 
>  ⋮      
>  0.17844 
>  0.172413
>  0.166667
>
> Cheers,
>    Kevin
>
>
> On Wednesday, May 7, 2014 7:10:20 AM UTC-7, John Myles White wrote:
>>
>> Comprehensions work much better if you type them:
>>
>> ys = Float64[runge(x) for x in xs]
>>
>>  — John
>>
>> On May 7, 2014, at 7:08 AM, Hans W Borchers <[email protected]> wrote:
>>
>> Thanks a lot.
>>
>> Before putting this question I searched for "map" through the Julia 0.3 
>> Manual (PDF version)
>> and did not find a reference to a map() function. Now repeating this 
>> procedure I see it. Sorry.
>>
>> I am still wondering what comprehension is good for if it dismisses all 
>> the type information.
>>
>>
>> On Wednesday, May 7, 2014 1:58:40 PM UTC+2, Tobias Knopp wrote:
>>>
>>> try 
>>>     
>>>     ys = map(runge,xs)
>>>
>>  
>>
>>
>>

Reply via email to