[Python-ideas] Delayed Execution via Keyword

Abe Dillon abedillon at gmail.com
Fri Feb 17 12:12:08 EST 2017


Actually, following from the idea that packing and unpacking variables
should be delayed by default, it might make sense to use syntax like:

>>> a = *(2+2)
>>> b = a + 1

Instead of

>>> a = lazy 2+2  # or whatever you want the keyword to be
>>> b = a + 1

That syntax sort-of resembles generator expressions, however; I usually
like how python favors actual words over obscure symbol combinations for
readability's sake.

On Fri, Feb 17, 2017 at 10:57 AM, Abe Dillon <abedillon at gmail.com> wrote:

> I'd like to suggest a shorter keyword: `lazy`
>
> This isn't an endorsement. I haven't had time to digest how big this
> change would be.
>
> If this is implemented, I'd also like to suggest that perhaps packing and
> unpacking should be delayed by default and not evaluated until the contents
> are used. It might save on many pesky edge cases that would evaluate your
> expression unnecessarily.
>
> On Fri, Feb 17, 2017 at 10:43 AM, Joseph Hackman <josephhackman at gmail.com>
> wrote:
>
>> Agreed. I think this may require some TLC to get right, but posting here
>> for feedback on the idea overall seemed like a good start. As far as I
>> know, the basic list and dict do not inspect what they contain. I.e.
>>
>> d = {}
>> d['a']= delayed: stuff()
>> b=d['a']
>>
>> b would end up as still the thunk, and stuff wouldn't be executed until
>> either d['a'] or b actually is read from.
>>
>> -Joseph
>>
>> > On Feb 17, 2017, at 11:34 AM, Chris Angelico <rosuav at gmail.com> wrote:
>> >
>> >> On Sat, Feb 18, 2017 at 3:29 AM, Joseph Hackman <
>> josephhackman at gmail.com> wrote:
>> >> ChrisA: I am not sure about collections. I think it may be fine to not
>> special case it: if the act of putting it in the collection reads anything,
>> then it is evaluated, and if it doesn't it isn't. The ideal design goal for
>> this would be that all existing code continues to function as if the change
>> wasn't made at all, except that the value is evaluated at a different time.
>> >>
>> >
>> > Yeah, I'm just worried that it'll become useless without that. For
>> > instance, passing arguments to a function that uses *a,**kw is going
>> > to package your thunk into a collection, and that's how (eg) the
>> > logging module will process it.
>> >
>> > It's not going to be easy to have a simple AND useful definition of
>> > "this collapses the waveform, that keeps it in a quantum state", but
>> > sorting that out is fairly key to the proposal.
>> >
>> > ChrisA
>> > _______________________________________________
>> > Python-ideas mailing list
>> > Python-ideas at python.org
>> > https://mail.python.org/mailman/listinfo/python-ideas
>> > Code of Conduct: http://python.org/psf/codeofconduct/
>> _______________________________________________
>> Python-ideas mailing list
>> Python-ideas at python.org
>> https://mail.python.org/mailman/listinfo/python-ideas
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170217/1df8e304/attachment.html>


More information about the Python-ideas mailing list