This thread is tragically long on opinions and short on arguments backing them up. It occurs to me that we can write specialized methods for collect(::LinSpace) that generate the collected version more efficiently than generic iteration does, which eliminates one of the potential arguments for just generating an array.
On Wednesday, October 21, 2015, Gabriel Gellner <[email protected]> wrote: > I agree with this downvote so much it hurts. The logspace/linspace is > painfully ugly. linrange is the right name in my find for the iterator > version. > > On Wednesday, 30 September 2015 10:31:55 UTC-7, Alex Ames wrote: >> >> Another downvote on linspace returning a range object. It seems odd for >> linspace and logspace to return different types, and linrange provides the >> low-memory option where needed. Numpy's `linspace` also returns an array >> object. >> I ran into errors when trying to plot a function over a linspace of x >> values, since plotting libs currently expect vectors as arguments, not >> range objects. Easily fixed if you know Julia well, but Matlab/Python >> converts may be stymied. >> >> On Wednesday, September 30, 2015 at 12:19:22 PM UTC-5, J Luis wrote: >>> >>> I want to add my voice to the dislikers. Those are the type of surprises >>> that are not welcome mainly for matlab users. >>> >>> quarta-feira, 30 de Setembro de 2015 às 16:53:57 UTC+1, Christoph Ortner >>> escreveu: >>>> >>>> I also strongly dislike the `linspace` change; I like the idea though >>>> of having `linspace` and `linrange`, where the former should give the >>>> array. >>>> Christoph >>>> >>>> >>>> On Wednesday, 30 September 2015 10:21:36 UTC+1, Michele Zaffalon wrote: >>>>> >>>>> I just realize that the thread is about 0.3.11 and I am showing output >>>>> for 0.4.0-rc2. Sorry for the noise. >>>>> >>>>> On Wed, Sep 30, 2015 at 11:17 AM, Michele Zaffalon < >>>>> [email protected]> wrote: >>>>> >>>>>> >>>>>> On Wed, Sep 30, 2015 at 9:50 AM, Milan Bouchet-Valat <[email protected] >>>>>> > wrote: >>>>>> >>>>>>> Le mercredi 30 septembre 2015 à 08:55 +0200, Michele Zaffalon a >>>>>>> écrit : >>>>>>> > Just curious: linspace returns a Range object, but logspace >>>>>>> returns a >>>>>>> > vector because there is no much use case for a LogRange object? >>>>>>> > >>>>>>> > @feza: I have also seen the deprecation warning going away after a >>>>>>> > couple of calls, but I am not sure why. If you restart Julia, the >>>>>>> > deprecations reappear. >>>>>>> Deprecation warnings are only printed once for each call place. The >>>>>>> idea is that once you're aware of it, there's no point in nagging >>>>>>> you. >>>>>>> >>>>>>> Anyway, that warning is most probably not related to linspace at all, >>>>>>> but rather to the array concatenation syntax resulting in an effect >>>>>>> equivalent to collect(). If you show us a piece of code that prints >>>>>>> the >>>>>>> warning, we can give you more details. >>>>>>> >>>>>>> >>>>>>> Regards >>>>>>> >>>>>> >>>>>> Sorry, you are right, I was referring to the concatenation. >>>>>> It prints it exaclty twice if I type it in the REPL, it always prints >>>>>> it if I define it within a function e.g. a() = [1:3]. >>>>>> >>>>>> C:\Users\michele.zaffalon>julia >>>>>> _ >>>>>> _ _ _(_)_ | A fresh approach to technical computing >>>>>> (_) | (_) (_) | Documentation: http://docs.julialang.org >>>>>> _ _ _| |_ __ _ | Type "?help" for help. >>>>>> | | | | | | |/ _` | | >>>>>> | | |_| | | | (_| | | Version 0.4.0-rc2 (2015-09-18 17:51 UTC) >>>>>> _/ |\__'_|_|_|\__'_| | Official http://julialang.org/ release >>>>>> |__/ | x86_64-w64-mingw32 >>>>>> >>>>>> julia> [1:3] >>>>>> WARNING: [a] concatenation is deprecated; use collect(a) instead >>>>>> in depwarn at deprecated.jl:73 >>>>>> in oldstyle_vcat_warning at abstractarray.jl:29 >>>>>> in vect at abstractarray.jl:32 >>>>>> while loading no file, in expression starting on line 0 >>>>>> 3-element Array{Int64,1}: >>>>>> 1 >>>>>> 2 >>>>>> 3 >>>>>> >>>>>> julia> [1:3] >>>>>> WARNING: [a] concatenation is deprecated; use collect(a) instead >>>>>> in depwarn at deprecated.jl:73 >>>>>> in oldstyle_vcat_warning at abstractarray.jl:29 >>>>>> in vect at abstractarray.jl:32 >>>>>> while loading no file, in expression starting on line 0 >>>>>> 3-element Array{Int64,1}: >>>>>> 1 >>>>>> 2 >>>>>> 3 >>>>>> >>>>>> julia> [1:3] >>>>>> 3-element Array{Int64,1}: >>>>>> 1 >>>>>> 2 >>>>>> 3 >>>>>> >>>>>> julia> a() = [1:3] >>>>>> a (generic function with 1 method) >>>>>> >>>>>> julia> a() >>>>>> WARNING: [a] concatenation is deprecated; use collect(a) instead >>>>>> in depwarn at deprecated.jl:73 >>>>>> in oldstyle_vcat_warning at abstractarray.jl:29 >>>>>> in a at none:1 >>>>>> while loading no file, in expression starting on line 0 >>>>>> 3-element Array{Int64,1}: >>>>>> 1 >>>>>> 2 >>>>>> 3 >>>>>> >>>>>> julia> a() >>>>>> WARNING: [a] concatenation is deprecated; use collect(a) instead >>>>>> in depwarn at deprecated.jl:73 >>>>>> in oldstyle_vcat_warning at abstractarray.jl:29 >>>>>> in a at none:1 >>>>>> while loading no file, in expression starting on line 0 >>>>>> 3-element Array{Int64,1}: >>>>>> 1 >>>>>> 2 >>>>>> 3 >>>>>> >>>>>> julia> a() >>>>>> WARNING: [a] concatenation is deprecated; use collect(a) instead >>>>>> in depwarn at deprecated.jl:73 >>>>>> in oldstyle_vcat_warning at abstractarray.jl:29 >>>>>> in a at none:1 >>>>>> while loading no file, in expression starting on line 0 >>>>>> 3-element Array{Int64,1}: >>>>>> 1 >>>>>> 2 >>>>>> 3 >>>>>> >>>>>> >>>>>>> >>>>>>> > On Wed, Sep 30, 2015 at 5:40 AM, feza <[email protected]> wrote: >>>>>>> > > Strange it *was* giving me an error saying deprecated and that I >>>>>>> > > should use collect, but now it's fine. >>>>>>> > > >>>>>>> > > >>>>>>> > > On Tuesday, September 29, 2015 at 10:28:12 PM UTC-4, Sheehan >>>>>>> Olver >>>>>>> > > wrote: >>>>>>> > > > fez, I'm pretty sure the code works fine without the collect: >>>>>>> > > > when exp is called on linspace it converts it to a vector. >>>>>>> > > > Though the returned t will be linspace object. >>>>>>> > > > >>>>>>> > > > On Wednesday, September 30, 2015 at 12:10:55 PM UTC+10, feza >>>>>>> > > > wrote: >>>>>>> > > > > Here's the code I was using where I needed to use collect >>>>>>> (I've >>>>>>> > > > > been playing around with Julia, so any suggestions on this >>>>>>> code >>>>>>> > > > > for perf is welcome ;) ) . In general linspace (or the : >>>>>>> > > > > notation) is also used commonly to lay a grid in space for >>>>>>> > > > > solving a PDE for some other use cases. >>>>>>> > > > > >>>>>>> > > > > function gp(n) >>>>>>> > > > > n = convert(Int,n) >>>>>>> > > > > t0 = 0 >>>>>>> > > > > tf = 5 >>>>>>> > > > > t = collect( linspace(t0, tf, n+1) ) >>>>>>> > > > > sigma = exp( -(t - t[1]) ) >>>>>>> > > > > >>>>>>> > > > > c = [sigma; sigma[(end-1):-1:2]] >>>>>>> > > > > lambda = fft(c) >>>>>>> > > > > eta = sqrt(lambda./(2*n)) >>>>>>> > > > > >>>>>>> > > > > Z = randn(2*n) + im*randn(2*n) >>>>>>> > > > > x = real( fft( Z.*eta ) ) >>>>>>> > > > > return (x, t) >>>>>>> > > > > end >>>>>>> > > > > >>>>>>> > > > > >>>>>>> > > > > On Tuesday, September 29, 2015 at 8:59:52 PM UTC-4, Stefan >>>>>>> > > > > Karpinski wrote: >>>>>>> > > > > > I'm curious why you need a vector rather than an object. Do >>>>>>> > > > > > you mutate it after creating it? Having linspace return an >>>>>>> > > > > > object instead of a vector was a bit of a unclear judgement >>>>>>> > > > > > call so getting feedback would be good. >>>>>>> > > > > > >>>>>>> > > > > > On Tuesday, September 29, 2015, Patrick Kofod Mogensen < >>>>>>> > > > > > [email protected]> wrote: >>>>>>> > > > > > > No: >>>>>>> > > > > > > >>>>>>> > > > > > > julia> logspace(0,3,5) >>>>>>> > > > > > > 5-element Array{Float64,1}: >>>>>>> > > > > > > 1.0 >>>>>>> > > > > > > 5.62341 >>>>>>> > > > > > > 31.6228 >>>>>>> > > > > > > 177.828 >>>>>>> > > > > > > 1000.0 >>>>>>> > > > > > > >>>>>>> > > > > > > On Tuesday, September 29, 2015 at 8:50:47 PM UTC-4, Luke >>>>>>> > > > > > > Stagner wrote: >>>>>>> > > > > > > > Thats interesting. Does logspace also return a range? >>>>>>> > > > > > > > >>>>>>> > > > > > > > On Tuesday, September 29, 2015 at 5:43:28 PM UTC-7, >>>>>>> Chris >>>>>>> > > > > > > > wrote: >>>>>>> > > > > > > > > In 0.4 the linspace function returns a range object, >>>>>>> > > > > > > > > and you need to use collect() to expand it. I'm also >>>>>>> > > > > > > > > interested in nicer syntax. >>>>>>> >>>>>> >>>>>> >>>>>
