Also: I know there are several modern computer languages that use arrows to
represent anonymous functions (JS, Kotlin, Scala...).
I also personally remember using (and teaching) Maple in the mid-90s, which
used arrows to define functions:
https://www.maplesoft.com/support/help/Maple/view.aspx?path=operators/functi...
I used to find it perfectly natural.
(There is obviously a fundamental difference here: Maple's functions are
symbolic, while Python's are procedural. Maple also has procedures which
can't be manipulated symbolically).
S.
On Tue, Feb 23, 2021 at 10:57 AM Stéfane Fermigier
Hi,
My personal opinion is that arrows or even fat arrows would be a nice addition to the Python language for anonymous functions.
I cringe a bit every time I have to write "lambda x: ..." (and even more for parameter-less "lambda: ...").
I have a background in math so I find arrow notation very natural. I have studied a bit lambda calculus, so I can relate to a notation inspired by it too, but I believe:
1) That for it to be elegant, it should be more concise e.g. "ƛx: .." not "lambda x: ..." (but Python is not APL and I don't believe we are ready to introduce non-ascii unicode notations in the language).
2) More importantly, I believe most people are more familiar with the arrow notation than the lambda notation (lambda calculus is, AFAIK, only taught in advanced logic or CS courses at the University).
S.
On Tue, Feb 23, 2021 at 10:26 AM Steven D'Aprano
wrote: On Mon, Feb 15, 2021 at 09:29:45AM -0800, Guido van Rossum wrote:
Proposals like this always baffle me. Python already has both anonymous and named functions. They are spelled with 'lambda' and 'def', respectively. What good would it do us to create an alternate spelling for 'def'? [...]
I think that the desire probably comes from thinking of short mathematical functions where the body is a simple expression, like in maths:
def f(x): return 3*(x**2) - 2*x + 4
is kinda clunky and not very maths-like compared to:
f(x) -> 3*(x**2) - 2*x + 4
which is suggestive of function notation:
f : ℝ -> ℝ, f(x) = 3*(x**2) - 2*x + 4
If you've used modern Computer Algebra System calculators, they often have similar notation:
# Texas Instruments Nspire 3⋅x² − 2⋅x + 4 -> y
(except they have a proper arrow too, not just ASCII hyphen greater than).
So there is definitely some aesthetic advantage to the arrow if you're used to maths notation, and if Python had it, I'd use it.
But it doesn't scale up to multi-statement functions, and doesn't bring any new functionality into the language, so I'm not convinced that its worth adding as a mere synonym for def or lambda or both.
-- Steve _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@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/SIY32P... Code of Conduct: http://python.org/psf/codeofconduct/
-- Stefane Fermigier - http://fermigier.com/ - http://twitter.com/sfermigier - http://linkedin.com/in/sfermigier Founder & CEO, Abilian - Enterprise Social Software - http://www.abilian.com/ Chairman, National Council for Free & Open Source Software (CNLL) - http://cnll.fr/ Founder & Organiser, PyParis & PyData Paris - http://pyparis.org/ & http://pydata.fr/
-- Stefane Fermigier - http://fermigier.com/ - http://twitter.com/sfermigier - http://linkedin.com/in/sfermigier Founder & CEO, Abilian - Enterprise Social Software - http://www.abilian.com/ Chairman, National Council for Free & Open Source Software (CNLL) - http://cnll.fr/ Founder & Organiser, PyParis & PyData Paris - http://pyparis.org/ & http://pydata.fr/