total descendants:: total children::1 |
Kratsia odpoved: pretoze (.) komponuje dve fcie takto: V priklade hore mame (odpustim si polymorfizmus): Vsimni si, ze sa neda zvolit premenna b: * v pripade (*): b = Int -> Int* v pripade (*2): b = IntCo vedie k tomu, ze tento kus kodu sa proste neotypuje. Dlhsia odpoved: V skutocnosti su typy nasledovne: Takze Haskellovsky type system to naunifikuje (ano, Haskellovsky type system je v podstate nebacktrackujuci Prolog) nasledovne: cim v podstate vyrobi z (*2) funkciu typu Num (x->x), Num x => (x -> x) -> (x -> x).To sa ale neotypuje, pretoze x -> x nie je instanciou triedy Num. A to je prave chyba, ktoru GHC vypise.Vyskytuje sa tu teda (na prvy pohlad) zaujimavy jav akehosi rozsirenia typu tak, ze za typovu premennu nedosadis primitivum. Uvazme napriklad vyraz: kde Nezmysel? Ale kdeze. Je to validny kod. Staci sa zamysliet, preco. :) |
| |||||||||||||||||||||||