[Python-Dev] Fwd: summing a bunch of numbers (or "whatevers")

Ka-Ping Yee ping@zesty.ca
Sun, 20 Apr 2003 03:42:26 -0500 (CDT)

On Sun, 20 Apr 2003, Brett Cannon wrote:
> I think part of the trouble here is the name.  The word "sum" just
> automatically causes one to think math.  This leads to thinking of
> multiplication, division, and subtraction.  But Alex's proposed function
> does more than a summation by special-casing the concatentation of
> strings.
> Perhaps renaming it to something like "combine()" would help do away with
> the worry of people wanting a complimentary version for multiplication
> since it does more than just sum numbers; it also combines strings in a
> very efficient manner.

Why not simply call it "add()", if it's going to be in the built-ins?
That seems like the most straightforward and accurate name.

It would have the same argument spec as min() and max(): it accepts
a single list argument, or multiple arguments to be added together.
Thus, no serious confusion with operator.add -- builtin add() would
work anywhere that operator.add works now.

>>> help(add)
    add(sequence) -> value
    add(a, b, c, ...) -> value

    With a single sequence argument, add together all the elements.
    With two or more arguments, add together all the arguments.

New question: what is add([])?  If add() is really polymorphic, then
this should probably raise an exception (just like min() and max() do).
That would lead to idioms such as

    add(numberlist + [0])

    add(stringlist + [''])

I suppose those don't look too bad.  Nothing vastly better springs
to mind.

-- ?!ng