treba typove systemy Javy a stare Scaly jsou nekorektni
tvrdit, že nějaký typový systém je nekorektní, je předčasné.
A kromě toho nemožné, typový systém může být zároveň korektní i nekorektní. Proto jsem navrhoval vzít STλC, to lidi poberou a jde na tom vše kolem typů krásně vysvětlit, včetně metalogických důkazů (ne)korektnosti/úplnosti. A jde v tom přímo programovat za účelem názornosti.
No, ukaz mi, jak v STλC otypujes treba faktorial.. Jaky priradis typ tomu rekurzivnimu volani? Ja STλC chapu tak, ze vzdy muzes otypovat jen funkce nad termy, jejichz typ uz nejak z predtim znas.
Nějak se v tom motáš, zopakuj si pro začátek, co je λ kalkulus. Zrovna faktoriál bývá první funkcí ve výukových textech pro freshmeny. Normálně je typu ωω, to by asi člověk čekal. Dokud nebudeš chtít psát Ackermannovu funkci a podobně užitečné ptákoviny, STλC bohatě stačí.
Nevim, co tim chces rict, ze ma neco "typ ωω". Primo na Wikipedii se pise:
"This is because recursion is not allowed by the typing rules: it is impossible to find types for fixed-point combinators and the looping term Ω = ( λ x . x x ) ( λ x . x x ) {\displaystyle \Omega =(\lambda x.~x~x)(\lambda x.~x~x)} \Omega =(\lambda x.~x~x)(\lambda x.~x~x). Recursion can be added to the language by either having a special operator f i x α {\displaystyle {\mathtt {fix}}_{\alpha }} {\mathtt {fix}}_{\alpha }of type ( α → α ) → α {\displaystyle (\alpha \to \alpha )\to \alpha } (\alpha \to \alpha )\to \alpha or adding general recursive types, though both eliminate strong normalization."
Jenže tady se celou dobu bavíme o primitivní rekurzi, ne o samodružných bodech
Pustý teoretik se může vrtat v Ackermannovi, ale ve vlákně snad jde o *praktické* použití typů
Takže rewind (opět) - stačí-li nám faktoriál (a ostatní primitivně rekurzivní funkce, jiné se v praxi stejně nepoužívají), je STλC ideální kandidát na typový systém.