Haskell cheatsheet

[Edit]

Aritmetika

div :: Integral a ⇒ a → a → a div dělenec dělitel
dělenec `div` dělitel
dělení
mod :: Integral a ⇒ a → a → a mod modulený modulitel
modulený `mod` modulitel
modulo
+ :: Num a ⇒ a → a → a prvníSčítanec + druhýSčítanec
(+) prvníSčítanec druhýSčítanec
sčítání
- :: Num a ⇒ a → a → a menšenec - menšitel
(-) menšenec menšitel
odčítání
* :: Num a ⇒ a → a → a prvníČinitel * druhýČinitel
(*) prvníČinitel druhýČinitel
násobení
max :: Ord a ⇒ a → a → a max prvníČíslo druhéČíslo
prvníČíslo `max` druhéČíslo
maximum ze dvou čísel
min :: Ord a ⇒ a → a → a min prvníČíslo druhéČíslo
prvníČíslo `max` druhéČíslo
minimum ze dvou čísel

Aritmetika na seznamech

sum :: (Num a) ⇒ [a] → a sum seznam suma všech prvků v seznamu
product :: (Num a) ⇒ [a] → a product seznam produkt všech prvků v seznamu
maximum :: (Ord a) ⇒ [a] → a maximum seznam maximum ze seznamu
minimum :: (Ord a) ⇒ [a] → a minimum seznam minimum ze seznamu
and :: [Bool] → Bool and seznam vrátí True pokud všechny prvky seznamu jsou True
or :: [Bool] → Bool or seznam vrátí True pokud alespoň jeden prvek ze seznamu je True

Logika

< :: Ord a ⇒ a → a → Bool prvníČíslo < druhéČíslo
(<) prvníČíslo druhéČíslo
menší než
<= :: Ord a ⇒ a → a → Bool prvníČíslo <= druhéČíslo
(<=) prvníČíslo druhéČíslo
menší rovno
> :: Ord a ⇒ a → a → Bool prvníČíslo > druhéČíslo
(>) prvníČíslo druhéČíslo
větší než
>= :: Ord a ⇒ a → a → Bool prvníČíslo >= druhéČíslo
(>=) prvníČíslo druhéČíslo
větší rovno
== :: Ord a ⇒ a → a → Bool a == b
(==) a b
rovná se
/= :: Ord a ⇒ a → a → Bool a /= b
(/=) a b
nerovná se
&& :: Bool → Bool → Bool a && b
(&&) a b
logické a
|| :: Bool → Bool → Bool a || b
(||) a b
logické nebo
even :: Integral a ⇒ a → Bool even číslo je sudé
odd :: Integral a ⇒ a → Bool odd číslo je liché

Logika na seznamech

fst :: (a,b) → a fst dvojice vrátí první prvek z dvojice
snd :: (a,b) → a snd dvojice vrátí druhý prvek z dvojice
all :: (a → Bool) → [a] → Bool all funkcePodmínka seznam vrátí True pokud pro všechny prvky seznamu vrátí funkcePodmínka True (all odd [1,3..100] = True)
any :: (a → Bool) → [a] → Bool any funkcePodmínka seznam vrátí True pokud pro alespoň jeden prvek v seznamu vrátí funkcePodmínka True (any even [1..100] = True)

Operace se seznamy

reverse :: [a] → [a] reverse seznam
reverse string
vrátí seznam v opačném pořadí
concat :: [[a]] → [a] concat seznamSeznamu
concat seznamStringů
slepí seznamy v seznamu do jednoho seznamu
++ :: [a] → [a] → [a] prvníSeznam ++ druhýSeznam
prvníString ++ druhýString
připojí druhýSeznam za prvníSeznam
!! :: [a] → Int → a seznam !! n vrátí n-tý prvek seznamu
length :: [a] → Int length seznam vrátí počet prvků v seznamu
head :: [a] → a head seznam vrátí první prvek seznamu (nefunguje na prázdných seznamech)
tail :: [a] → [a] tail seznam vrátí seznam bez prvního prvku (nefunguje na prázdných seznamech)
init :: [a] → [a] init seznam vrátí seznam bez posledního prvku (nefunguje na prázdných seznamech)
last :: [a] → a last seznam vrátí poslední prvek v seznamu (nefunguje na prázdných seznamech)
null :: [a] → Bool null seznam vrátí True pokud je seznam prázdný
id :: a → a id a identita = vrátí to co dostane
replicate :: Int → a → [a] replicate n prvek vrátí seznam obsahující prvek nkrát

Řazení seznamů

compare :: Ord a ⇒ a → a → Ordering compare a b vrátí výsledek porovnání a a b
sort :: (Ord a) ⇒ [a] → [a] sort seznam seřadí seznam
sortBy :: (a → a → Ordering) → [a] → [a] sortBy funkceCoPorovnává seznam setřídí seznam podle funkceCoPorovnává
sortOn :: Ord b ⇒ (a → b) → [a] → [a] sortOn převodníFunkce seznam seřadí seznam podle porovnání výsledků převodníFunkce

Další funkce

takeWhile :: (a→Bool) → [a] → [a] takeWhile funkcePodminka seznam Vrátí seznam prvků, které se nachází na začátku seznamu seznam a funkcePodminka na ně vrací True
dropWhile :: (a→Bool) → [a] → [a] dropWhile funkcepodminka senznam Vrátí doplněk výstupu takeWhile se stejnými parametry
zip :: [a] → [b] → [(a,b)] zip prvníSeznam druhýSeznam Vrátí seznam dvojic (tuplů), kde je společně n-tý prvek prvníSeznam a n-tý prvek z druhýSeznam
zipWith :: (a → b → c) → [a] → [b] → [c] zip funkce prvníSeznam druhýSeznam Vrátí seznam, jehož prvky jsou výstupy funkce jejíž paramtery byli n-té prvky seznamů prvníSeznam a druhýSeznam
take 3 “abcde” = “abc” take n senzam vrátí seznam obsahující prvních n prvků ze seznam
drop :: Int → [a] → [a] drop n seznam vrátí seznam bez prvních n prvků
splitAt :: Int → [a] → ([a], [a]) splitAt n seznam vrátí dvojici seznamů a a b, kdy a obsahuje prvních n prvků ze seznam a b je deplněk a na seznam
elem :: (Eq a) ⇒ a → [a] → Bool elem a seznam vrátí True pokud se prvek nachází v seznamu

Důležité funkce vyššího řádu

map :: (a → b) → [a] → [b] map funkce seznam vrátí seznam výstupů funkce funkce pro jednotlivé prvky v seznam
foldr :: (a → b → b) → b → [a] → b foldr funkce akumulátor seznam projde všechny prvky v seznamu seznam zleva do prava aplikuje na ně funkci funkce a vrátí výsledek
scanr :: (a → b → b) → b → [a] → [b] ? foldr, co vrací seznam všech mezivýsledků
filter :: (a → Bool) → [a] → [a] filter funkcePodminka seznam vrátí seznam obsahující prvky z seznam pro které funkcepodmínka vrátila True
foldl :: (a → b → a) → a → [b] → a foldl funkce akumulátor seznam projde všechny prvky v seznamu seznam zprava doleva aplikuje na ně funkci funkce a vrátí výsledek
scanl :: (b → a → b) → b → [a] → [b] ? foldl, co vrací seznam všech mezivýsledků