On Mon, Feb 15, 2021 at 12:30 PM Guido van Rossum <guido@python.org> wrote:
On Mon, Feb 15, 2021 at 9:02 AM Ricky Teachey <ricky@teachey.org> wrote:
[...]
But if we could expand the  proposal to allow both anonymous and named functions, that would seem like a fantastic idea to me.  

Anonymous function syntax:

(x,y)->x+y

Named function syntax:

f(x,y)->x+y

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'?

Thanks for responding. I don't want to derail this discussion especially since I've brought it up in the last several months and didn't get anywhere on it.

To answer the question though: I think it would really open up python to a whole group of people are find the idea of "programming" too intimidating but could benefit from it immensely. This could happen if writing a function was made more similar to what they already KNOW how to write (handwritten math).

A common thing I hear from colleagues is "I'm not a developer, I'm not a programmer, I'm an engineer", and seeing this just intimidates people:

lambda x,y: (x**2+y**2)**0.5

def  hypotenuse(x,y):
    (x**2+y**2)**0.5

Allowing short one-line functions to be spelled something like this would be more friendly because it looks so familiar, nearly identical to a handwritten mathematical equation:

hypotenuse(x,y) => (x**2+y**2)**0.5

Anyway I've offered up this desire to this list before and for the most part people haven't been very receptive, so I won't belabor it. But I thought I'd bring it up again in this context since this:

f(x,y) => x+y

...and this:

(x,y) => x+y

...would be SO CLOSE to each other.

You could also write this, I suppose:

hypotenuse = (x,y) => (x**2+y**2)**0.5  

But that isn't any better for the casually programming engineer than lambda or def, to be honest.

On Mon, Feb 15, 2021 at 12:40 PM Jonathan Goble <jcgoble3@gmail.com> wrote:
On Mon, Feb 15, 2021 at 12:29 PM Ricky Teachey <ricky@teachey.org> wrote:
f(x,y)=>x+y->str

I can't -1 this enough. How do I read this?

Imagine you have never seen this discussion and you come across this code in the wild. You are familiar with type hints, including return type annotations, but aren't familiar with this syntax. From that perspective, what does this code mean?

...

My preferred spelling of the above (with the addition of sample parameter type hints) would be:

f(x: int, y: int) -> str: x, y

...

Even with that spelling, I'm -0.5 on the named function version (for the reasons described by Guido), and only +0.5 on the anonymous version (because I'm not convinced that it's needed).

I see your point and I would be fine with that spelling. With no type hints it would look like:

hypotenuse(x,y): (x**2+y**2)**0.5

That would seem fine to me.

Anyway as I said above, I know this is an uphill battle. I'll leave it alone unless other people come out liking the anonymous and non-anonymous function syntax idea.

---
Ricky.

"I've never met a Kentucky man who wasn't either thinking about going home or actually going home." - Happy Chandler