Well, yes. I think the 'is' operator is where other attempts fall short, and why it would require a change to Python. But yes, it would need to force the promise.
On 17 February 2017 at 21:20, Nathaniel Smith <n...@pobox.com> wrote: > On Thu, Feb 16, 2017 at 9:24 PM, Joseph Hackman <josephhack...@gmail.com> > wrote: > > Howdy All! > > > > This suggestion is inspired by the question on "Efficient debug logging". > > > > I propose a keyword to mark an expression for delayed/lazy execution, for > > the purposes of standardizing such behavior across the language. > > > > The proposed format is: > > delayed: <expr> > > i.e. log.info("info is %s", delayed: expensiveFunction()) > > People seem very excited about this as an idea, but I don't understand > how it can be implemented. > > For example, how do you propose to handle code like this? > > value = delayed: some_dict.get("whatever") > if value is None: > ... > > I.e., the question is, how does 'is' work on delayed objects? I guess > it has to force the promise and walk the proxy chain in each input and > then do an 'is' on the base objects? This seems like a really deep and > confusing change to Python's object model for a pretty marginal > feature. (This is a special case of the general observation that it's > just not possible to implement fully-transparent proxy objects in > Python.) > > -n > > -- > Nathaniel J. Smith -- https://vorpus.org >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/