Haskell – úvod do jazyka Flashcards

1
Q

Opis Haskell

A

č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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Opis lenive vyhodnocovanie

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Ake su 2 implementacie haskellu?

A

Glasgow Haskell Compiler (GHC) - kompiluje do zdrojoveho kodu
Haskell User’s Gofer System (Hugs) - interpreter

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Ake service pozname na balicky?

A

Hackage, Stack, Cabal

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Ako viem vytvorit cez stack novy program?

A

stack new meno-projektu meno-šablóny

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

cim vacsinou zacina haskell file?

A

module Main (main) where

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Co robi :t <expr>?</expr>

A

ukáže typ <expr></expr>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Co robi :i <name>?</name>

A

Zobrazi info o <name></name>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Co robi :l <module>?</module>

A

nahrá <module></module>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Co robi :set <option>?</option>

A

nastaví <option> (opak je :unset <option>)</option></option>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Co robi :p <name>?</name>

A

ukáže hodnotu <name> bez vynútenia vyhodnotenia</name>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Co spravi :sp <name>?</name>

A

zjednodušene ukáže hodnotu <name> bez vynútenia vyhodnotenia</name>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Ake su zakladne typy haskell?

A

data Bool = False | True
data Char≈’a’ | ’A’ | ’b’ | ’B’ |…
data [] a = [] | a : [a]
type String = [Char]
N-tice: (a,b,c)
Unit:data () = ()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Ake pozname integral typy?

A
  • 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⟩
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Co je to Ratio?

A

a: racionálne čísla nad a (denominator (10 % 4) 2)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Ake pozname realfloat typy?

A
  • Float: reálne čísla jednoduchá presnosť (4 bajty)
  • Double: reálne čísla dvojitá presnosť (8 bajtov)
17
Q

Ako zapisujeme komplexne cisla?

A
  • import Data.Complex
  • (0 :+ 1) * (0 :+ 1) (-1.0) :+ 0.0
18
Q

Opis identifikatory

A

začínajú písmenom
môžu obsahovať písmená, cifry, podčiarkovník _ a apostrof ’
sú rozdelené do dvoch menných priestorov: premenne zacinaju malym a konstruktore velkym
identifikátor _ dont care

19
Q

Ako piseme komenty?

A

– koment
{-koment-}

{-# direktíva #-}, napríklad zapnutie všetkých upozornení: {-# OPTIONS_GHC -Wall #-}

20
Q

Ako vieme odsadzovat kod?

A

but len taby alebo aj {} a ; na zaciatku riadku

21
Q

Aku pozname precedenciu operatorov?

A

Zľava asociatívne
Neasociatívne
Sprava asoc.

22
Q

Co este je dolezite pri precedencii operatorov?

A

Priorita

23
Q

Opis rezy

A

(# e) ≡ \x -> x # e
slide 24

24
Q

Ako spravit funkciu infixovu?

A

(f x y)≡(x ‘f‘ y)

25
Q

Cim negujeme?

A

not

26
Q

Ako spravime zaporne cislo?

A

negate, alebo do zatvorky napr (-3)

27
Q

Ako testujeme nerovnost?

A

/=

28
Q

V zoznamoch, ake mame operacie s O(1)?

A

:, tail, head

29
Q

Ako vraciame i-ty prvok zoznamu?

A

[10,11,12]!!2

30
Q

Co robi init init :: [a] -> [a]?

A

vynechá posledný prvok (O(n))

31
Q

Ako zistim i-ty prvok zoznamu?

A

[10,11,12]!!2

32
Q

ak mame typ instancie triedy Enum, tak mozeme robit…

A
  • [e1 ..] ≡ enumFrom e1
  • [e1,e2 ..] ≡ enumFromThen e1 e2
  • [e1 .. e3] ≡ enumFromTo e1 e3
  • [e1, e2 .. e3] ≡ enumFromThenTo e1 e2 e3
33
Q

Co je teda [ .. ]?

A

Iba syntakticky cukor
[1,3..] = [1,3,5,7,9,11,13,15,17,19,21,… [False ..] = [False,True]

34
Q

Opis list comprehensions

A

[e|q1, . . . , qn], n ≥ 1,
qi je:
* generátor tvaru p<-e, kde p je vzor typu t a e je výraz typu [t]
* let var=exp, pričom var je použiteľné v e a nasled. kvalifik.
* stráž (boolean guard), ľubovoľný výraz typu Bool

35
Q

Co robi transpose?

A

Transponuje maticu

36
Q

Co robi zip?

A

[a] -> [b] -> [(a, b)]