[Python-ideas] Delayed Execution via Keyword
Joseph Hackman
josephhackman at gmail.com
Sat Feb 18 00:35:03 EST 2017
I'm not married to the colon. Does anyone else see any issue with dropping
it?
On 18 February 2017 at 00:27, David Mertz <mertz at gnosis.cx> wrote:
> On Fri, Feb 17, 2017 at 2:35 PM, Joseph Hackman <josephhackman at 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 <mertz at 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.
>>
>
> I still think the colon is ugly and inconsistent with other Python uses.
> I know you are trying for analogy with lambda (which is related, yes). But
> the analogies with yield, yield from, async, and await feel much stronger
> to me. Also, 'lambda' *requires* the colon since it might take arguments
> and that is necessary to tell when they end.[*] 'delayed' like those other
> words I mention has no such need.
>
> That said, I think you are right that it makes no sense to declare a
> function signature with 'delayed' (or 'lazy', 'deferred', whatever word).
> Calling it definitely! This feels important:
>
> x = foo(delayed very_complex_computation())
>
> But in the definition signature it feels nonsensical, I agree. However,
> that still doesn't answer other uses of the colon:
>
> {delayed: 17} # No idea if this is a set of one delayed object or a
> dictionary
> lambda delayed: delayed: 17 # Just don't know where to start with this
>
> All these problems simply go away if we drop the colon.
>
>
> [*] i.e. what would this colon-free lambda mean: 'lambda a, b, c'? A
> function of no arguments return a tuple? a function of three arguments?
>
>
> --
> Keeping medicines from the bloodstreams of the sick; food
> from the bellies of the hungry; books from the hands of the
> uneducated; technology from the underdeveloped; and putting
> advocates of freedom in prisons. Intellectual property is
> to the 21st century what the slave trade was to the 16th.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170218/36aaadc1/attachment-0001.html>
More information about the Python-ideas
mailing list