@ Joseph Function annotations can be arbitrary python expressions, it is completely legal to have something like
>>> def foo(bar: lambda x: x + 1): ... pass Why you would want that I can't say, but it is legal. In the same way, `def foo(bar: delayed 1 + 1)` should probably be legal syntax, even if the use is inexplicable. (also note that the `:` works with lambda because lambda cannot be used as an identifier). In any case, as David said, bikeshedding. @ Ed Its my understanding that d[k] is always d[k], even if d or k or both are delayed. On the other hand, `delayed d[k]` would not be, but you would need to explicitly state that. I think its worth expanding on the example Joseph made. I think it makes sense to consider this proposal to be `x = delayed <EXPR>` is essentially equivalent to `x = lambda: <EXPR>`, except that there will be no need to explicitly call `x()` to get the delayed value, instead it will be evaluated the first time its needed, transparently. This, for the moment, assumes that this doesn't cause enormous interpreter issues, but I don't think it will. That is, there is no "delayed" object that is created and called, and so as a user you really won't care if an object is "delayed" or not, you'll just use it and it will be there. Do you understand this proposal differently? --Josh On Fri, Feb 17, 2017 at 5:35 PM Joseph Hackman <josephhack...@gmail.com> wrote: > I think we should use the colon to make the delayed word (or whatever word > is selected), unambiguously used in this way (and to prevent any existing > code from breaking). > > On 17 February 2017 at 17:09, David Mertz <me...@gnosis.cx> wrote: > > That was a problem with the colon that occurred to me. I think it can't be > tokenized in function annotations. > > > I don't see any reason for delayed execution and function annotations to > mix. i.e. > def foo(delayed: bar): > pass > would define a function that takes one argument, named delayed, of type > bar. > > > > Plus I still think the no-colon looks better. But that's bikeshedding. > Also other words are plausible. I like lazy even more than delayed, I > think. Still, I'd love the construct whatever the exact spelling. > > > I'm not particularly married to delayed, but I don't know how to properly > vet this inside the community. I'm glad you like the proposal! > > -Joseph >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/