Haskell Hero
Interaktivní učebnice pro začínající Haskellisty
|
VyhodnocováníCo je vyhodnocováníFunkcionální programování se celé točí okolo vyhodnocování výrazů. Uvědomme si, že už ve chvíli, kdy zadáváme Hugsu výraz k vyhodnocení, mu zadáváme výsledek výpočtu v určitém tvaru. Hugs tento nějakým-způsobem-zapsaný-výsledek vezme a převede jej do tvaru, který už se nedá dále zjednodušit.
Například Vyhodnocujeme
Všechny výrazy se samozřejmě nevyhodnotí po jednom kroku. Například vyhodnocení výrazu 3 + 5 * 2 ~> 3 + 10 ~> 13 Pokud chceme zapsat, že se výraz zjednodušil na jiný výraz ve dvou krocích, ale nechceme uvádět mezikrok, napíšeme 3 + 5 * 2 ~>² 13 Stejně bychom postupovali, pokud bychom chtěli napsat, že se výraz zjednodušil na jiný po třech krocích: 3 * 4 + 2 * 5 ~>³ 22atd.
Pokud chceme zapsat, že se výraz zjednodušil na jiný a je nám jedno, kolik kroků zjednodušování zabralo, napíšeme nad šipku místo čísla hvězdičku: Priorita operátorů, směr sdružováníNabízí se otázka „Jakto, že při vyhodnocování výrazu Sčítání má prioritu 3 + 5 * 2 ~> 3 + 10 ~> 13 Pokud chceme vynutit, aby se sčítání provedlo před násobením, dáme
Prefixový zápis má vždy přednost před infixovým. Ve výrazu (+) 3 5 * 5 ~> 8 * 5 ~> 40 Dále by nás mohlo zajímat, zda se má výraz
|