Díky za článek, zajímavé okénko, i když ta terminologie mne mate. Například na začátku jsou zmíněny operátory and a or - ale v textu jsem nic co by bylo jako "typový and" nenašel - aspoň ne ve smyslu průniku, jak mi to přijde přirozené a je třeba v Lispu - např
(and (integer 0 3) (satisfies evenp))
je 0 nebo 2. Tím operátorem and se tedy myslí některý ze součinových typů (record, tuple)? Na druhou stranu používat and pro v podstatě kartézský součin mi nepřijde čisté.
A proč vlastně to sjednocení musí být disjunktní? Aby v tom match case nezáleželo na pořadí klauzulí?
"typový and" je implicitní u záznamů (tedy v Pythonu u n-tic, pojmenovaných n-tic a datových tříd). Vlastně se tam nepřímo říká něco ve stylu: typ User je složen položky typu Name A SOUČASNĚ z typu Surname atd. Lepší je používat ten původní termín product type, ten to vystihuje lépe, protože popisuje "mohutnost" výsledného typu (viz ten příklad se záznamem s několika položkami typu boolean).
Termín "and" vychází z Curryho–Howardova isomorfismu z teorie typů. To jsem mohl uvést, ale zase jsem ten článek nechtěl udělat "akademickým". Pořád si myslím, že teorie typových systémů je důležitá (ale nedokončená :-), na druhou stranu to může lidi strašit, i když v praxi je to třeba v Pythonu vlastně strašně jednoduché.