On Wed, Dec 01, 2021 at 12:26:33PM +0000, Matt del Valle wrote:

> If anything I think
> the symmetry between the proposed '=>' syntax and the arrow syntax for
> lambdas in other languages (potentially even in python in the future)
> reduces the cognitive burden significantly, given the there is an
> equivalent symmetry with their semantics (in both cases the code is being
> evaluated later when something is called).

There is not as much symmetry as you might think between a hypothetical 
lambda arrow and the proposed late-bound default arrow.

    arg => arg + 1  # lambda
    arg=>expr  # late-bound default

The first case is (or could be some day...) an actual expression that 
returns a function object, which we will explicitly call at some point. 
Or at least pass the function to another function, which will call it.

But the late bound default is not an expression, it is a declaration. It 
declares the default value used for arg. We don't have to call anything 
to get access to the default value. It just shows up when we access the 
parameter without providing an argument for it.

We certainly don't need to call arg explicitly to evaluate the default.

It may be that behind the scenes the default expression is stored as a 
callable function which the interpreter calls. (I believe that list 
comprehensions do something similar.) But that's an implementation 
detail that can change: it might just as well store the source code as a 
string, and pass it to eval().

Or use some other mechanism that I'm not clever enough to think of, so I 
shall just call "deepest black magic".

There is no *neccessity* for the late-bound default to be a hidden 
function, and it is certainly not part of the semantics of late-bound 
defaults. Just the implementation.

If you disagree, and still think that the symmetry is powerful enough to 
use the same syntax for both lambdas and default arguments, well, how 
about if we *literally* do that?

    def function(spam=expression,  # regular default
                 lambda eggs: expression,  # late-bound default
                 )

Heh, perhaps the symmetry is not that strong after all :-)



-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/J6KVJX2HEXRNVPEZAEBEFXGW7SLSKWNY/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to