The python example doesn't show anything different. The matlab example does in that it returns x (though not the slice assigned to). The real difference to python is this:
>>> x = numpy.arange(1,11) >>> y = x[0:9] = x[1:10] >>> y array([ 3, 4, 5, 6, 7, 8, 9, 10, 10]) so in python that means x[0:9] = x[1:10] y = x[1:10] whereas in Julia it means temp = x[1:10] x = temp y = temp On Fri, May 9, 2014 at 2:59 AM, Dominique Orban <[email protected]>wrote: > Is that *really* the intended effect??? Python and Matlab seem much more > intuitive and return something sensible: > > >> x = [1:10]; > >> x(1:9) = x(2:10) > > x = > 2 3 4 5 6 7 8 9 10 10 > > > >>> import numpy > >>> x = numpy.arange(1,11) > >>> x[0:9] = x[1:10] > >>> x > array([ 2, 3, 4, 5, 6, 7, 8, 9, 10, 10]) > > > On Thursday, May 8, 2014 8:59:58 PM UTC-7, Jeff Bezanson wrote: > >> Yes, it is well-defined. The right-hand side is returned, which might >> cause some confusion here. >> >> On Thu, May 8, 2014 at 10:10 AM, Neal Becker <[email protected]> wrote: >> > Is the following well-defined in julia? >> > >> > julia> x = [1:10] >> > 10-element Array{Int64,1}: >> > 1 >> > 2 >> > 3 >> > 4 >> > 5 >> > 6 >> > 7 >> > 8 >> > 9 >> > 10 >> > >> > julia> x[1:9] = x[2:10] >> > 9-element Array{Int64,1}: >> > 2 >> > 3 >> > 4 >> > 5 >> > 6 >> > 7 >> > 8 >> > 9 >> > 10 >> > >> > In general, are all such aliased assignments well-defined (all, as in >> for >> > arbitrary ranges)? >> > >> >
