[Python-3000] Python 3000 Status Update (Long!)

Ron Adam rrr at ronadam.com
Thu Jun 21 21:09:07 CEST 2007



Bill Janssen wrote:
>> I think you were missing my point, which is that sum
>> doesn't and shouldn't necessarily have the same
>> semantics as map(+).
> 
> It's not that I don't understand your argument, Steve.
> 
> I just don't find it effective.  If we are going to distinguish
> between "arithmetic addition" and "concatenation", we should find
> another operator.
> 
> As long as we *don't* do that, my personal preference would be to
> either remove "sum" completely, or have it work in a regular fashion,
> depending on which data type is passed to it, either as arithmetic
> addition or as sequence concatenation.

 From the standpoint of readability and being able to know what a 
particular section of code does I believe it is better to have limits that 
make sense in cases where the behavior of a function may change based on 
what the data is.

My preference would be to limit sum() to value addition only, and never do 
concatenation.  For bytes types, it could be the summing of bytes.  This 
could be useful for image data.  For all non numeric types it would 
generate an exception.

And if a general function that joins and/or extends is desired, a separate 
function possibly called merge() might be better.  Then sum() would always 
do numerical addition and merge() would always do concatenation of objects. 
That makes the code much easier to read 6 months from now with a lower 
chance of having subtle bugs.

The main thing for me is how quickly I can look at a block of code and 
determine what it does with a minimum of back tracking and data tracing.

Cheers,
    Ron







More information about the Python-3000 mailing list