[Python-3000] Python 3000 Status Update (Long!)
Steve Howell
showell30 at yahoo.com
Thu Jun 21 21:15:43 CEST 2007
--- Ron Adam <rrr at ronadam.com> wrote:
>
>
> 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.
>
Ron, I obviously agree with your overriding points
100%, and thank you for expressing them better than I
did, but I would object to the name merge(). "Merge"
to me has the semantics of blending strings, not
joining them. English already has two perfectly well
understood words for this concept:
"abc", "def" -> "abcdef"
The two English words are "join" and "concatenate."
Python wisely chose the shorter word, although I can
see arguments for the longer word, as "join" probably
is a tiny bit more semantically overloaded than
"concatenate."
The best slang word for the above is "mush."
____________________________________________________________________________________
Now that's room service! Choose from over 150,000 hotels
in 45,000 destinations on Yahoo! Travel to find your fit.
http://farechase.yahoo.com/promo-generic-14795097
More information about the Python-3000
mailing list