pattern matching je obecne super vec. Co ji ale dela dokonalou, je typovej system a zjisteni prekladacem, jestli jsou vsechny vetve "uplne". Tj. ze napriklad testuji na zaporna cisla, na cisla kladna v dalsi vetvi a ze jsem nezapomel na nulu. Nebo dtto s enumama a tak dal. To ale Coconut ani Python asi nezvladaji, i kdyz by to teoreticky mohlo Mypy zaridit (???)
jj proto lidem doporučuji, ať aspoň omrknou, jak to dělá Rust nebo jazyky z rodiny ML (tedy StandardML, OCaml nebo F#). Možná to není úplně mainstream, ale je IMHO dobré tušit, jaké možnosti některé jazyky mají.
Jinak k tomu dotazu - ne, současné Mypy to nedokáže. Ani Ruff to asi nedokáže (a tam by to bylo asi možné předat docela rychle, když o tom uvažuju).
no mě to připadá jako dost nekoncepční přílepek do Pythonu. V první řadě vůbec neměli zavádět if-else a už od začátku začít matchingem (on ten moderní if je celkově divná konstrukce, to už byl lepší aritmetický if s třemi větvemi :-p).
Na okraj - zpočátku dost matou ta klíčová slova. Mít "match" jako začátek rozeskoskoku a "case" jako větve je divný (IMHO tedy). Možná by bylo lepší použít namísto "match" slovo "switch" a namísto "case" "match" nebo nechat oboje :-) Maličko podobně do toho šel jazyk Go, který tedy nemá pattern matching, ale podporuje podmínky v "case"
tak nebudeme se tvářit, že by Python vznikl na základě hodně promyšleného konceptu, to zase ne :-)
podle mého je to dobrej přílepek do toho jazyka, určitě lepší, než tam dávat něco typu switch-case jako v C nebo Javě - to by byla hodně slabá náhražka.
Co mi chybí, je pokročilejší strukturální matching, který si trošku ukážeme příště - třeba získání části řetězce nebo seznamu atd. To umí Coconut, takže je otázka, jestli se to někdy do Pythonu dostane. Já doufám, že jo.
Re celkový koncept: možná je ještě lepší mít "matche" pro celé funkce (to umí ML i Coconut), než mít vlastně jen rozeskok na steroidech. Ale to mluví mé funkcionální já...