I don't understand this obsession with wanting to store a bunch of
numbers in memory which trivially compress.  Even more so as most
numerical computations are memory bound, so storing more stuff is bad.
All the interface functions work with a range (or if not a bug report
should be filed), apart from write.  However, writing to a
range-like-thing should be rare, most often probably a bug, and thus
should be a conscious decision; so it is actually good to have to
`collect` first.

I suspect the reason the logspace returns a vector is because no one had
time to implement it yet.

On Wed, 2015-09-30 at 20:17, Milan Bouchet-Valat <[email protected]> wrote:
> Le mercredi 30 septembre 2015 à 10:31 -0700, Alex Ames a écrit :
>> 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.
> This sounds more like an issue with the plotting libraries. In most
> cases, you shouldn't care about the actual type of a read-only
> AbstractArray. If they only support the Array type, people will run
> into the same issue when using integer ranges à la 1:10 anyway.
>
> Do you have other examples in which returning a range object is an
> issue? So far, that's the only one I've read (except for the confusion
> about deprecation warnings).
>
> Regards
>
>> 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/ rele
>> > > > > ase
>> > > > > |__/                   |  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.
>> > > > > >
>> > > > >
>> > > >

Reply via email to