Haskell – úvod do jazyka Flashcards

(36 cards)

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?

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
Cim negujeme?
not
26
Ako spravime zaporne cislo?
negate, alebo do zatvorky napr (-3)
27
Ako testujeme nerovnost?
/=
28
V zoznamoch, ake mame operacie s O(1)?
:, tail, head
29
Ako vraciame i-ty prvok zoznamu?
[10,11,12]!!2
30
Co robi init init :: [a] -> [a]?
vynechá posledný prvok (O(n))
31
Ako zistim i-ty prvok zoznamu?
[10,11,12]!!2
32
ak mame typ instancie triedy Enum, tak mozeme robit...
* [e1 ..] ≡ enumFrom e1 * [e1,e2 ..] ≡ enumFromThen e1 e2 * [e1 .. e3] ≡ enumFromTo e1 e3 * [e1, e2 .. e3] ≡ enumFromThenTo e1 e2 e3
33
Co je teda [ .. ]?
Iba syntakticky cukor [1,3..] = [1,3,5,7,9,11,13,15,17,19,21,... [False ..] = [False,True]
34
Opis list comprehensions
[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
Co robi transpose?
Transponuje maticu
36
Co robi zip?
[a] -> [b] -> [(a, b)]