parse-time optimizations
Carlos Ribeiro
cribeiro at mail.inet.com.br
Thu May 31 09:11:30 EDT 2001
At 13:54 30/05/01 +0000, jcm wrote:
>Delaney, Timothy <tdelaney at avaya.com> wrote:
> > Very true. Constant folding could only be used in unambiguous
> situations ...
> > and most such things aren't unambiguous :(
>
> > Indeed
>
> > x + 1 + 2 + 3
>
> > couldn't even be folded down to
>
> > x + 1 + 5
>
>This is an unambiguous situation.
No, it is not unambiguous. It assumes that the + operator is associative -
which is true for the case of the "normal" addition. However, due to
Python's dynamic nature, x can be any kind of object. It can define a new
addition operation without the nice properties we all take for granted.
Before you tell me that this can't happen, please note that there are some
mathemathical constructs that are not transitive, reflexive and/or
associative. In group theory you can find such constructs; matrix
multiplication also have this property.
So x+1+2+3 is not the same as x+1+5: it all depends on the definition of
the add operator, as supplied by the x object.
Now, IF Python spec is changed to state that the add operator MUST BE
associative...
Carlos Ribeiro
More information about the Python-list
mailing list