Feature suggestion: sum() ought to use a compensated summation algorithm
Szabolcs
szhorvat at gmail.com
Mon May 5 10:08:02 EDT 2008
On May 5, 12:24 pm, Duncan Booth <duncan.bo... at invalid.invalid> wrote:
> Szabolcs <szhor... at gmail.com> wrote:
> > On May 5, 9:37 am, Szabolcs Horvát <szhor... at gmail.com> wrote:
> >> Gabriel Genellina wrote:
>
> >> > Python doesn't require __add__ to be associative, so this should
> >> > not be
> > used as a general sum replacement.
>
> >> It does not _require_ this, but using an __add__ that is not
> >> commutative and associative, or has side effects, would qualify as a
> >> serious misuse, anyway.
>
> > Sorry, I meant associative only, not commutative.
>
> Unfortunately an __add__ which is not associative is actually perfectly
> reasonable.
Well, 'reasonable' is a subjective notion in this case :-) I have
never seen a non-associative use of the plus sign in maths, so I would
tend to take associativity for granted when seeing a + b + c in code,
therefore I would avoid such uses. (Multiplication signs are a
different story.) Of course others may feel differently about this,
and technically there's nothing in the way of using a non-associative
__add__! :)
> For example you could have a Tree class where adding two trees
> returns a new tree so (a+b)+c gives you:
>
> .
> / \
> . c
> / \
> a b
>
> but a+(b+c) gives:
>
> .
> / \
> a .
> / \
> b c
More information about the Python-list
mailing list