Haskell Hero
Interaktivní učebnice pro začínající Haskellisty
|
VýrazyCo je to výraz?Výraz je všechno, co nám Hugs bez připomínky vezme a není to povel.
V krabičkové metodě budeme výrazy znázorňovat různými geometrickými tělesy (válec, hranol, těšit se můžete i na vláček). Bude vysvětleno později. Znázornění výrazů pomocí krabiček Prefixový / infixový zápisV Haskellu používáme dva typy zápisu výrazů. Prefixový a infixový. Ukázka na začátek:
Infixový zápis: Infixový zápis
Prefixový zápis: Prefixový zápis
Znaménko označující unární či binární funkci, se někdy nazývá operátor. Rozlišujeme dva druhy operátorů:
Každý infixově zapsaný výraz můžeme zapsat prefixově. Opačně to funguje pouze u binárních funkcí. Infixově zapsaný výraz za použití nealfanumerického operátoru převedeme do prefixu tak, že operátor dáme do závorek a napíšeme jej před argumenty. 3 + 5 ==> (+) 3 5 Prefixově zapsaný výraz alfanumerickým operátorem zapíšeme infixově tak, že operátor obalíme zpětnými apostrofy a vložíme jej mezi argumenty. div 8 3 ==> 8 `div` 3 Mezi infixovým a prefixovým zápisem není žádný výpočetní rozdíl. Vyzkoušejte si sami v Hugsu. Oba jsou zpracovány stejně, akorát prefixově zapsaná funkce má větší prioritu. To znamená, že ve výrazu 3 * div 5 2se nejdříve provede prefixově zapsané celočíselné dělení a teprve potom infixově zapsané násobení. PodvýrazyKaždý výraz se dá rozložit na podvýrazy. Ukázkový výraz: Pro snazší rozložení výrazu na podvýrazy převedeme výraz do prefixového tvaru. Podvýrazem je:
3 + 5 má celkem 5 podvýrazů.
Složitější výraz:
(zipWith (*) [1,2] [3,4]) ++ [5,6] má tedy 11 podvýrazů.
|