Haskell Hero
Interaktivní učebnice pro začínající Haskellisty
|
Vstup a výstup IProč vstupní a výstupní operace?Zatím jsme si ukázali, jak vyhodnocovat výrazy a jak definovat funkce. Mnohdy ale budeme od našich programů chtít, aby:
K těmto úkonům slouží vstupní a výstupní operace běžně označované jako IO-operace (z anglického input/output) nebo prostě IO. Tyto operace se také nazývají akce. Základní operace
Pokud si necháme vyhodnotit výraz putStr "bbbccc"Hugs zjistí, že putStr je akce, kterou následně provede. Akce putStr dělá to, že na obrazovku vypíše řetězec, který jí dáme v argumentu. Při provádění akce se nevypisuje výsledek. Vypsání na obrazovku je pouze efektem akce putStr .
Funkce putStr "aaa\nbbb\nccc"dopadne tak, že \n se nahradí odřádkováním a na obrazovku se vypíše
aaa bbb ccc Zmiňme některé další jednoduché IO akce:
Řetězení operacíVětšinou nebudeme chtít provést jen jednu IO operaci, ale budeme jich chtít za sebe poskládat více. Například budeme chtít načíst nějakou hodnotu od uživatele, tu zpracovat a vypsat uživateli výsledek.
K řetězení operací se používá konstrukce vypis = do putStrLn "abc" putStrLn "def" putStrLn "ghi"Pozor na zarovnání! Opět platí, že příkazy, které se mají v do -bloku provést, musí být zarovnány pod sebe. Existuje i varianta zápisu na jeden řádek:
vypis = do {putStrLn "abc"; putStrLn "def"; putStrLn "ghi"}
Mimo samotné operace si v názevOdkazu <- vstupníOperace "Uložit" je v uvozovkách, protože se nejedná přímo o zapsání dat na nějaké místo v paměti. Proč tomu tak je si povíme později.
Ukládání mezivýsledku můžeme provádět pouze v Příklad
Definujte nulární funkci Definici zapíšeme přesně tak, jak nám říká zadání:
main = do s <- getLine putStr "Napsal jsi: " putStr s |