Haskell – úvod do jazyka Flashcards
Opis Haskell
čistý (pure) funkcionálny jazyk, t.j. bez vedľajších účinkov
monadický V/V (monadic I/O) (až v 1996)
lenivé (lazy, non-strict) vyhodno. argumentov
statická typová kontrola
zaviedol triedy typov (type classes)
Opis lenive vyhodnocovanie
modulárne programovanie potrebuje dobré lepidlo
* efektívnejšie skladanie funkcií: any plist = or(map plist)
* nekonečné dátové štruktúry (nat = 1:map (+1) nat)
Ake su 2 implementacie haskellu?
Glasgow Haskell Compiler (GHC) - kompiluje do zdrojoveho kodu
Haskell User’s Gofer System (Hugs) - interpreter
Ake service pozname na balicky?
Hackage, Stack, Cabal
Ako viem vytvorit cez stack novy program?
stack new meno-projektu meno-šablóny
cim vacsinou zacina haskell file?
module Main (main) where
Co robi :t <expr>?</expr>
ukáže typ <expr></expr>
Co robi :i <name>?</name>
Zobrazi info o <name></name>
Co robi :l <module>?</module>
nahrá <module></module>
Co robi :set <option>?</option>
nastaví <option> (opak je :unset <option>)</option></option>
Co robi :p <name>?</name>
ukáže hodnotu <name> bez vynútenia vyhodnotenia</name>
Co spravi :sp <name>?</name>
zjednodušene ukáže hodnotu <name> bez vynútenia vyhodnotenia</name>
Ake su zakladne typy haskell?
data Bool = False | True
data Char≈’a’ | ’A’ | ’b’ | ’B’ |…
data [] a = [] | a : [a]
type String = [Char]
N-tice: (a,b,c)
Unit:data () = ()
Ake pozname integral typy?
- Integer: celé čísla ľubovoľnej veľkosti (aka BigInt)
- Int: celé čísla pevnej presnosti (8 bajtov)
⟨−9223372036854775808, 9223372036854775807⟩ - Word: nezáporné celé čísla pevnej presnosti (8 bajtov)
⟨0, 18446744073709551615⟩
Co je to Ratio?
a: racionálne čísla nad a (denominator (10 % 4) 2)