From: "Aleksi Niemelä" Date: 2000-10-25T05:54:45+09:00 Subject: [ruby-talk:5830] Array#insert rehashed As I pursued for the Array#insert some time ago, I happened to find this "feature": $ ruby -v -e'a=[1,2,3]; a[1,0]=a; p a;' ruby 1.6.2 (2000-10-16) [i686-linux] [1, 1, 1, 1, 1, 1] I guess it's not as it should be. I'd expect [1, 1,2,3, 2,3]. I went on and fixed it. Then I thought that my hack to make a = [1,2,3] p a.insert(-1, [4,5]) to output [1,2,3, [4,5]] instead of [1,2, [4,5], 3], which is produced by a[-1,0]=[[4,5]] should make it's way into Array#[]. So I changed [] to work like insert does. Then I bumped into the problem. Backwards compatibility. I got scared. Messing around with [] surely causes many programs to fail. Insert, however, could work as seen fit as no one uses it yet (at least not too many). So I'm asking: 1) Do you think we should change the way Array#[pos, len] version works for next Ruby version? - remove surprising array[pos, 0] = [1,2,3] array flattening - change semantics for negative pos 2) Do you think Array#insert(pos, stuff) should work almost like current Array#[pos, 0] = stuff except it doesn't autoflat? Or do you think negative pos too should be handled differently from Array#[pos,len]= ? After some concensus on these issues we can discuss about matju's add-ons [ruby-talk:5768], which follow the same theme. - Aleksi