Fold Flashcards

1
Q

Co je to Celozrnné (wholemeal) programovanie?

A

znamená myslieť vo veľkom (Ralf Hinze), t.j. namiesto:
* cesty vidieť celý graf
* konkrétneho riešenia vyvinúť rámec pre riešenie problémov
* s elementami pracovať s celým zoznamom

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

opis foldr

A

foldr :: (a->b->b) -> b -> [a] -> b
slide 3

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

aky prvok berie ako prvy foldr?

A

posledny, teda ide akoby od konca (nejde pouzit na nekonecne)

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

opis foldl

A

foldl :: (b->a->b) -> b -> [a] -> b
slide 7

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

Aky prvok berie ako prvy foldl?

A

prvy

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

Kedy je trojica M = (S, ⊗, e) monoid?

A

S={x1,x2,…} je neprázdna množina,
⊗ : S × S → S je asociatívna operácia na množine S,
e ∈ S je neutrálny prvok (zľava aj sprava) vzhľadom na ⊗.

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

Vyslov prvu vetu o dualite foldr a foldl

A

slide 10

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

Vyslov 2 vetu o dualite foldr a foldl

A

slide 11

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

Vyslov 3 vetu o dualite foldr a foldl

A

slide 12

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

definuj foldr podla foldl

A

foldr f e xs= foldl (flip f) e (reverse xs)

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

Daj priklady dalsich identit pre foldr a foldl

A

slide 13

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

Naco su foldr1, foldl1?

A

Ked nevieme zvolit e, napr pri hladani maxima. Ale nepracuje na prazdnom zozname

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

Co robia funkcie scan?

A

Funkcie scan sú ako zodpovedajúce funkcie fold, ale vracajú aj zoznam všetkých medzivýsleldkov (akumulátorov).

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

co robi unfold?

A

unfoldr :: (b->Maybe (a, b))->b->[a]

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

aky je rozdiel medzi foldr, foldl a foldl’?

A

foldr nepoužíva chvostovú rekurziu
foldl má obrovské množstvo nedokončených výpočtov na halde
foldl’ - chvostová rekurzia s priebežným vyhod. akumulátora

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

Kedy použiť foldr?

A

pokiaľ f je nie je striktná (napr. (&&), (:)) - je lenivá na svojom druhom argumente

transformácia nekonečných zoznamov

17
Q

Kedy pouzit foldl’?

A

pokiaľ je funkcia f striktná (napr. (+))