Consider ML-style? :D

```

def fib(n):
    | n == 0     = 0
    | n == 1     = 1
    | otherwise  = fib(n-1) + fib(n-2)

def allow_entry(d):
    | d == {"name": "Bob"} = "Bob is not allowed in ever!"
    | d == {"name": "Charles", "day": "Tuesday"} = \
         "It's a Tuesday, so Charles is allowed in."
    | d == {"name": "Charles", "day": _}) = \
         "Charles is only allowed in on a Tuesday."
    | d == {"name": name} = f"Come in {name}, make yourself at home!"

```


On 05/08/2021 16:39, Sam Frances wrote:
Following on from PEP 634, it would be good to be able to have Erlang /
Elixir-style pattern matching in function headers.

(I don't know what the technical term is for this language feature, but
hopefully the examples will clarify.)

Here's the obligatory fibonacci example:

```
def fib(0):
     return 0

def fib(1):
     return 1

def fib(n):
     return fib(n-1) + fib(n-2)
```

Or, another example:

```
def allow_entry({"name": "Bob"}):
     return "Bob is not allowed in ever!"

def allow_entry({"name": "Charles", "day": "Tuesday"}):
     return "It's a Tuesday, so Charles is allowed in."

def allow_entry({"name": "Charles", "day": _}):
     return "Charles is only allowed in on a Tuesday."

def allow_entry({"name": name}):
     return f"Come in {name}, make yourself at home!"
```

Thanks for considering my idea.

Kind regards

Sam Frances
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/[email protected]/message/OPLBLWJPCN66QRUQNHBQSQOBNBFZRRBF/
Code of Conduct: http://python.org/psf/codeofconduct/

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

Reply via email to