tdelaney at avaya.com
Wed May 30 08:04:46 CEST 2001
> [Greg Ewing]
> > You would have to be careful how you implemented
> > this, because
> > x + "foo" + "blarg"
> > could have very different results from
> > x + "fooblarg"
> > depending on what sort of thing x is bound to.
> x + 1 + 2
> x + 3
> and so on.
Very true. Constant folding could only be used in unambiguous situations ...
and most such things aren't unambiguous :(
x + 1 + 2 + 3
couldn't even be folded down to
x + 1 + 5
as the expression needs to be evaluated left to right
((x + 1) + 2) + 3
3 + 2 + 1 + x
*could* be validly folded to
6 + x
Hmm ... this brings to mind C++ compilers - do *they* always get it right
with constant folding? Or do most not bother these days, for precisely this
>I don't want to use it at all unless it helpfully expands
> stars = "*" * 1000000
> at compile-time too <wink>.
> .pyc-files-are-far-too-small-ly y'rs - tim
Hmm ... I think a constant-folding implementation should perhaps have an
arbitrary maximum string length which can be folded... ;) On second
thoughts, perhaps it should only apply to numeric constants (which was my
approach in the first place). Then you have space *savings*, rather than
wasted space (both disc and RAM).
More information about the Python-list