- Za běhu funkce div nikoho nezajímá, nemá dva argumenty, není vůbec... Za běhu je na všechno pozdě a prostě děj se vůle boží.
To bych takhle neřekl, myslím, že jádro věci je, že za běhu nikoho nezajímá její třetí argument.
- Cílem typů (Maybe nebo závislostních), nebo čehokoliv jiného, je přinutit mě, abych ošetřil všechny vstupy.[...] jsem přinucen zohlednit, když se parsování nepovede. To je cíl - nedovolit překlad.
Jo, takhle to je. Bez záv. typů si může člověk ohlídat jen běžné typy (číslo vs. řetězec apod.), ktežto u záv. typů jdou hlídat i hodnoty (nenulovost, neprázdnost řetězce atd.). Je to prostě stejný princip o krok dál (i když implementačně to je o dost složitější a matematicky taky, typy už nejsou jedna kategorie, ale celá kumulativní hierarichie toposů).
V praxi rozhoduje, nakolik umí překladač odvodit typy. V Rustu nebo Go se taky většinou neuvádí
int nebo
i32 a jiné typy, když jdou odvodit automaticky. U záv. typů to jde často taky (naštěstí, protože psát je explicitně by byl opruz). Navíc překladače mají interaktivní mód, když místo výrazu napíšeš otazník (například
?prf), tak se provede typová kontrola a překladač ti napoví hodnotu a typ. To hodně pomáhá, hlavně při psaní důkazů rovnosti (typy tvaru
x = y).