On Sun, Aug 08, 2021 at 11:30:20AM +0400, Abdulla Al Kathiri wrote:

> For me, it looks normal because I am used to seeing pattern matching 
> for function parameters in functional programming languages.

Can you give us a few samples from other languages? The only one I know 
is Haskell:

    fib 0 = 0
    fib 1 = 1
    fib n = fib (n-1) + fib (n-2)


I don't *hate* that in Haskell, because Haskell is meant to be read 
almost as mathematical definitions. But Python functions are 
declarative, and Python code consists of statements which are executed 
in a defined order. I don't think that's a good match for Haskell-style 
syntax.

What's wrong with the straight-forward application of a match statement 
inside the function body? As you suggest:

> def fib(*args):
>       match args:
>               case 0, : return 0 
>               case 1, : return 1 
>               case int(n), : 
>                       return fib(n-1) + fib(n-2) 

It costs one extra line (the match statement), but makes it explicit 
what we're matching. And you save having to repeat the `def fib` for 
every case.

Most importantly, it means that we only need one kind of pattern 
matching syntax, instead of two.

-- 
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/WCOU56EW37ZAC76GNICXR5NOWNNR6GRN/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to