On Tue, Sep 19, 2000 at 08:41:34AM +1200, Christian Soeller wrote: > > Finally as an overload expert what do you think about the proposals > > to make arrays overloadable objects so one can say things like: > > > > @x = 3 * @y; > > Is this where RFC 231's suggestion for OO slicing comes in (see quote)? > > > For example, > > > > $matrix1->[2..5; 2..4] * $matrix2->[1,3,5; 11..64]; > > > > would denote: create two new objects for the specified submatrices, apply (overloaded) multiplication to these objects. Such a > > request is illegal for untie()d arrays; for tie()d arrays it is converted to a call to FETCH_SLICE in a scalar context. > > (Alternative: introduce two new tie()d methods: FETCH_SUBOBJECT, STORE_SUBOBJECT.) > > or is this supposed to be othogonal? Note the contexts: in my $matrix1->... proposals the things we multiply are objects (scalars!). This C<*> in my example is the "usual" overloaded C<*>. While in @x = 3 * @y; C<*> is some strange "array-context multiplication". > Another questing re RFC 231. Is it really required to make the > syntactical distinction between ranges (..) and bi_ranges (...)? Some > more explanation would be appreciated. I do not see how else one can do it. a) We want @arr[ $start .. $start + $items - 1 ] work for $items==0 too, right? b) We want @arr[ 0 .. -1 ] to get all the elements of the array, right? I see no way to distinguish these two situations except by using different syntax... IlyaThread Previous