
David Mertz, Ph.D. writes:
On Fri, Jun 24, 2022 at 3:50 AM Stephen J. Turnbull <stephenjturnbull@gmail.com> wrote:
I'm suggesting modified semantics where deferreds can be a proxy object, whose normal reaction to *any* operation (possibly excepting name binding) is
1. check for a memoized value, if not found evaluate its stored code, and memoize the value 2. perform the action on the memoized value
I think I like these semantics better than those my draft proposal. I haven't had a chance to enhance the proto-PEP more in the last few days (other work). But all of these comments are extremely helpful, and I'll have a better version in a few days. Hopefully I can address many of the concerns raised.
We (not sure how much help I'll be, but I'm in) need to deal with Chris A's point that a pure memoizing object doesn't help with the mutable defaults problem. That is with def foo(cookiejar=defer []): foo() produces a late bound empty list that will be used again the next time foo() is invoked. Now, we could modify the defer syntax in function parameter default values to produce a deferred deferred object (or, more likely, a deferred object that lacks the memoization functionality). But I suspect Chris will respond with (a polite expression with the semantics of) the puke emoji, and I'm not sure I disagree, yet. ;-) Steve