<div dir="ltr"><div class="gmail_quote">I think trying to eager-ify subexpressions is absurdly difficult to do right, and also a problem that occurs in other places in Python already, so solving it only for this new thing that might very well go no further is a bit odd.</div><div class="gmail_quote"><br></div><div class="gmail_quote">I don't think versions that aren't transparent are much use.</div><div class="gmail_quote"><br></div><div class="gmail_quote">> <span style="color:rgb(33,33,33);font-size:13px">Interesting. Okay. So in effect, these things aren't objects, they're</span></div><span style="color:rgb(33,33,33);font-size:13px">magic constructs that turn into objects the moment you do anything</span><br class="gmail_msg" style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">with them, even an identity check. That makes sense.</span><div><span style="color:rgb(33,33,33);font-size:13px"><br></span></div><div><span style="color:rgb(33,33,33);font-size:13px">This seems unfortunate. Why not make these things objects that replace themselves with the evaluated-to object when they're used?</span></div><div><span style="color:rgb(33,33,33);font-size:13px"><br></span></div><div><span style="color:rgb(33,33,33)">> </span><font color="#212121">"this collapses the waveform, that keeps it in a quantum state"</font></div><div><font color="#212121"><br></font></div><div><font color="#212121">That's a bit of a false dichotomy ;)</font></div><div><font color="#212121"><br></font></div><div><font color="#212121">I suggest that operators on delayed-objects defer evaluation iff all of their operands are delayed, with some hopefully-obvious exceptions:</font></div><div><font color="#212121">- Function call: delayed_thing() should evaluate delayed_thing</font></div><div><font color="#212121">- Attribute and item access should evaluate the container and key: even if both operands are delayed, in Python we have to assume things are mutable (especially if we don't know what they are yet), so we can't guarantee that delaying the lookup is valid.</font></div><div><font color="#212121"><br></font></div><div><font color="#212121">Just passing something to a function shouldn't collapse it. That'd make this completely useless.</font></div></div>