3226
Vývoj / Re:Typový system versus unittesty
« kdy: 18. 06. 2018, 17:27:07 »Máte v tom pěkný hokej.Takže test nemůže záviset na signatuře implementace, protože celý smysl testu je v tom, že implementace dává pro zadaný vstup očekávaný výstup bez ohledu na to, jaká je zrovna použitá implementace.Právě jsi popsal, co dělají typy. Je-li typem definováno, že výsledek funkce má být ytý succ x, tak to vždycky pozná, že je implementace správně (budeme-li o odvozování kompilátorem mluvit jako o jeho implementaci).
Zkuste si představit, že ta funkce v liché týdny přičítá a v sudé týdny odčítá. Budete definovat typ y-tý_následník_x_v_liché_ týdny_union_y-tý_předchůdce_v_sudé_týdny? Celou bankovní aplikaci pak navrhnete jako funkci main vracející ten správný datový typ™ a kompilátor už to nějak vyřeší?
Ano, mezi typy a algoritmy není úplně pevná hranice, do určité míry mezi nimi lze přecházet, ale ta pružnost není nekonečná. Nezapomínejte na to, že nakonec to stejně někdo musí převést do strojových instrukcí procesoru. A že většinu věcí lidé snáze vyjádří algoritmem, než aby definovali složitou hierarchii typů.