Okay, here’s my dilemma. It looks like this thread wants to devise a new syntax for lambda, using e.g. (x, y) -> x+y, or the same with =>. That’s great, but doesn’t open new vistas.
OTOH, for people using type annotations, a much more pressing issue is an alternative for typing.Callable that is more readable, and supports extra features that Callable doesn’t, like keyword args, varargs, and pos-only. If you can do both with the same arrow, great, but if the arrows must differ (for some technical reason, e.g. types in cast()), I want -> for Callable, and you can have => for lambda. —Guido On Mon, Feb 15, 2021 at 02:51 Steven D'Aprano <st...@pearwood.info> wrote: > On Mon, Feb 15, 2021 at 02:12:03AM +1100, Chris Angelico wrote: > > On Sun, Feb 14, 2021 at 8:42 PM Steven D'Aprano <st...@pearwood.info> > wrote: > > > We should not choose the more confusing, error-prone solution out of > > > fear of being different. Python is already different from Javascript in > > > every regard: > > > > > > > Is it really? > > Well, they're both Turing Complete, so I guess not different in *every* > regard :-) > > By the way, I'm not judging the differences. > > > > > - the basic execution model is different; > > Don't know what you mean here, but I thought they were the same. > > Python has a purely dynamic execution model; Javascript has a hybrid > two-pass model that combines elements of static and dynamic execution, > and which allows code like this to run: > > print(f(3)); > > function f(a) { > return a*2; > } > > > (not in an interactive REPL of course). > > Although both Python and Javascript have dynamic typing, Python's > type model is stronger (i.e. stricter) than Javascript's. > > 1 + '2' # an error in Python, 12 in Javascript. > > In Python, every thing is an object; in Javascript, some things are > objects, and some things are primitive values. > > > > > - the object model is different; > > Same object model. > > Absolutely not. Javascript is based on the prototype object model, and > Python is based on the class object model. > > > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain > > > > > - the numeric model is different; > > Python has more data types, but that's not as fundamental a difference > > as you might think > > Python has a numeric tower; Javascript has a single floating point type. > It's hard to build a tower with a single brick :-) > > > > > -the truthy/falsey model is different; > > There are different rules about WHAT is truthy/falsy, but, again, the > > differences aren't fundamental > > The differences are precisely my point. > > > > > - the syntax is different; > > > - the list of keywords is different; > > > - the standard library is different; > > > - the list of operators is different; > > Well, of course. If these four were the same, they'd be the same > > language. These four differ between Py2 and Py3 too. > > Yes, the fact that they are different languages is my point. > > > > > - even basic equality is different; > > Yes, although that's more historic than anything else - most people > > use "===" which has mostly the same semantics as Python's equality > > "Mostly the same", apart from being completely different :-( > > Javascript's === tests for "same type and equal" for primitive values, > and is equivalent to Python's `is` for objects. It cannot be overloaded. > > > > > - the culture of the community is different. > > TBH neither community has a single culture. > > Of course neither group of people is a monoculture of identical > clones. That would be the Haskell community *wink* > > But in general, the JS/Node.js community embraces practices which are > rejected by the Python community, such as the use of micro-packages. > Remember left-pad? > > This four-line package got nearly fifty million downloads last week: > > https://www.npmjs.com/package/isarray > > That's about 78 times per second. > > If I published that on PyPI, I would be amazed if I got 78 downloads in > a year. > > > -- > 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/7RDIPZDPOZUU7AD5JFE2BNQH75OAAGS7/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido (mobile)
_______________________________________________ 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/UJ32U33U4FL4GAOERD77CMB5QFJNHF63/ Code of Conduct: http://python.org/psf/codeofconduct/