Jak typy zajistis, ze tvoje metoda sum(a,b) vraci pro int a a int b spravny int soucet? Jako alternativu k primitivnimu assertEquals(3, sum(1,2)) ?
Teorie typů praví, že
sum a b je pohled na množinu všech možných kombinací
<a, b>. Takže stejně tak, jako víme, že po 1čce přijde dvojka (pomocí těch axiomů), tak víme že
(sum 1 2) == 3. Je třeba to nějak definovat, nemusí to být triviální, ale co už.
Pamatuji si učitele, který nám pro zajímavost ukazoval, jak se vypočítá odmocnina. Byl to vzorec na několik řádek (jak moc to byla hloupost netuším, od té doby jsem se k tomu nikdy nevrátil). A v reálu se proto stejně používají tabulky. (Jak to počítají procesory, zda na to mají vzorec, nebo používají taky tabulku, to netuším.)