On Fri, 27 Sep 2002, Dan Sugalski wrote:
: At 12:40 PM -0700 9/26/02, Sean O'Rourke wrote:
: >On Thu, 26 Sep 2002, Paul Johnson wrote:
: >>  Is that sufficiently vague?
: >
: >Not vague enough, because the current implementation manages to miss the
: >broad side of that semantic barn...
: 
: The intention is to allow aggregates to have different default return 
: values, IIRC. Right now we return undef as the default, when 
: accessing elements that don't exist, but there are cases where you 
: might want something else. (Numeric-only arrays might want to return 
: 0, and string-only ones "", for example)

We can certainly have arrays that know how to return default values.
But my apocalyptic remarks about dwimming were specifically with
respect to hyperoperators that might have specific ideas about
how to deal with differing arrays.

That behavior should in turn be distinguished from what I said about
parallel C<for> loops.  Those run until all streams are exhausted,
because otherwise there's no way for the code within the loop to
tell the loop to run longer.  If you assume you should run longer,
it's always possible for the loop to terminate itself early.  In the
particular case where one or another stream is infinite, the loop
will run forever unless terminated explicitly by either loop control
or detonation of the warhead.

: >Different operators doing different things sounds awful to me, because it
: >makes it hard to predict what will happen, because new operators will have
: >to be able to control what they do with their operands, and because new
: >types of "array-like" operands will have to tell operators how to treat
: >them.  Blech.
: 
: Well... no, not really.
: 
: I think this vagueness is my fault, as I badger Larry and Damian 
: about it on occasion.

Well, I'm never vague, except when I am.

: The reason it's vague is that the Right Thing depends on the types of 
: the variables on either side of an operator. Multiplying two matrices 
: should work differently than multiplying two multidimensional arrays, 
: or two vectors, or a vector by a matrix.
: 
: We should get the default behaviour defined and in use so people get 
: a handle on how things work, but we do want to make sure people keep 
: in mind that it's the default behaviour, not the required behaviour.

Right-o.  A system is expert friendly if it has the right options.
It's novice friendly if it has the right defaults.

Larry

Reply via email to