IB015 Haskell Cheat Sheet GHCi :q[uit] :l[oad] file.hs :r[eload] :i[nfo] name :t[ype] expr :m[odule] m Základní typy Syntaktické konstrukce vypne GHCi načte soubor file.hs znovu načte aktuální soubor vypíše informace o objektu name vypíše typ výrazu expr načte modul m Bool logická hodnota (True, False) Char znak (např. 'a') String řetězec (např. "abc"; synonymum [Char]) Int celé číslo omezené velikosti Integer libovolně velké/malé celé číslo Float reálné číslo s plovoucí desetinnou čárkou Double přesnější verze Float Složené typy (a,b) dvojice hodnot typů a, b (a,b,c) trojice hodnot typů a, b, c [a] seznam hodnot typu a a -> b -> c funkce s argumenty typů a, b, vrací c Typové třídy Eq a lze testovat na rovnost (==, /=) Ord a lze porovnávat (<, <=, >, >=, min, max) Mum a lze dělat aritmetické operace (+, -, *, abs, negate, signum) Integral a lze celočíselně dělit (div, mod, quot, rem, divMod, quotRem) Bounded a má nej menší a nej větší prvek (minBound, maxBound) Show a lze převést na řetězec (show) Read a lze přečíst z řetězce (read) použití např. ((read "123") :: Int) if b then x else y let x = t in s f x = tělo where x = t x, pokud b je True, jinak y s po nahrazení všech x za t lokální definice v těle funkce zip [x,y,z] [a,b] zipWith f [x,y,z] [a,b] [(x,a),(y,b)] [(f x a), (f y b)] Funkce f • g \x y z (+2) (2+) 'f id const x flip f Dvojice -> t složení funkcí f a g (nejdřív g, pak f) funkce s argumenty x,y,z, vrací t \x -> x + 2 \x -> 2 + x inŕixový zápis binární funkce f funkce, která vrací nezměněný vstup funkce, která vždy vrací hodnotu x prohození argumentů binární funkce f f st p první prvek z dvojice p snd p druhý prvek z dvojice p Seznamy head xs tail xs last xs init xs xs ! ! k x : xs xs ++ ys take k xs drop k xs map f xs filter p xs první prvek xs xs bez prvního prvku poslední prvek xs xs bez posledního prvku k-tý prvek xs (pozice počítá od 0) přidání prvku x na začátek seznamu xs zřetězení seznamů xs a ys prvních k prvků z xs xs bez prvních k prvků aplikuje f na všechny prvky xs prvky xs, pro které p vrací True Agregační funkce na seznamech foldl (+) 4 [1,2,3] foldr (+) 4 [1,2,3] foldll (+) [1,2,3] foldrl (+) [1,2,3] ((4 + 1) + 2) + 3) 1 + (2 + (3 + 4)) (1 + 2) + 3 1 + (2 + 3) Definice funkce podle vzoru f [] = tělo f [x] = tělo f (x:xs) = tělo f [x,y] = tělo f (x:y:xs) = tělo f (x,y) = tělo f 0 = tělo f 1 = tělo f 42 = tělo f x = tělo f _ = tělo pro prázdný seznam pro jednoprvkový seznam pro seznam délky alespoň 1 pro dvouprvkový seznam pro seznam délky alespoň 2 pro dvojici pro nulu pro jedničku pro čtyřicet dva pro jakýkoliv vstup pro jakýkoliv vstup (beze jména) IO al »= f al » a2 putStr s putStrLn s getChar getLine pure x spusť akci al, její výsledek předej funkci f, jejíž výsledek spusť spusť akci al a poté akci a2 akce; vypíše s akce; vypíše s a konec řádku akce; přečte od uživatele znak, vrátí ho jako výsledek akce; přečte od uživatele řádek, vrátí ho jako výsledek akce s výsledkem x, nedělá nic version 1.0