That’s a good point. But what will end being the way to recognize functions that copy? Surely all the vectorized math functions will still generate copies, while functions like convert will hopefullt make fewer copies.
— John On Sep 1, 2014, at 7:02 PM, Stefan Karpinski <[email protected]> wrote: > This will get significantly simpler in 0.4 since anything that can avoid > making a copy will. > > > On Mon, Sep 1, 2014 at 1:31 PM, Ethan Anderes <[email protected]> wrote: > Right, that’s a succinct way to put it. I would just add that I hope we can > do this in a way that allows the beginner to reason about things like > getindex, vec, reshape, transpose, vcat, etc without requiring the him/her to > understand pointers and the subtleties of memory layout. In a way, I’m being > selfish: I want to be able to teach my intro stats students Julia. > > For example, how does one tell that vec(a) does something different than > getindex(a,1:length(a)) without testing it? I guess testing it isn’t that big > of a deal, but if your a beginner you’ll end up testing everything. In > particular, if x = {"jill", 4} and y = {"bob", 2} it doesn’t seem a-priori > clear why z = vcat(x,y) doesn’t share memory with x and y. Once you open up > these possibilities, even things like x = sin(y), to a beginner, could have > some weird lazy evaluation interpretation. > > Another example, why does x=a do something different than x = a[:,:] > (currently the latter returns a copy, but I guess it might return an > ArrayView in the future)? Is x=a just one of those special cases where I tell > my students x=a doesn’t mean what you think…it means that x and a are now > names for the same thing. > > Anyhoo, my hope is to be able to explain how to identify the different > behavior to a beginner. > > -Ethan > > On Sunday, August 31, 2014 12:58:43 PM UTC-7, John Myles White wrote: > > > > I think there’s a broad issue that need resolution: how do you know when a > function’s output takes control of the memory used by its arguments? > > — John > > > > >
