myslím si, že funkce by měla vypadat třeba jako f :: () -> Int (z definice)
Proč by musela? K čemu by to bylo dobré?
nemyslím si, že třeba g :: Int je funkce, ptám se po nějakém teoretickém vysvětlení, proč je můj dojem chybný
Já uvažuji takto:
Mějme nějaký element:
a. Když dám tento element
a do nějaké rutiny, tak si ten element ta rutina zpracuje. Nezajímá mě, zda je to 42, nebo funkce 42().
Pak mám jiný element
fn x, což je element, kterej abych mohl použít, tak musím parametrizovat nějakým elementem. Buď ho do nějaké rutiny předám jako neparametrizovaný s tím, že si ho bude parametrizovat ona, nebo ho parametrizuju a teprve výsledek toho předám té rutině.
Pointa je, a v Haskellu je to hodně vidět: že funkce není nic specielního. Je to jen určitý typ elementu. A když zavolám funkci, tak ona nevrací hodnotu. Jen tím voláním vytvořím parametrizovaný element.
A Haskell pro tohle všechno má pěkné výrazy. Ale schválně jsem to opsal, aby to nemátlo a vyniklo.
Dokonce jsem uvažoval tak, že stejně jako můžeš prohlásit, že 42 je nulární funkce, tak můžeš klidně otočit, a říct, že žádná funkce, ale (fn 5) je jen parametrizovaná hodnota.