funkcie, chvostová rekurzia Flashcards

1
Q

Ako funguju guards?

A

factorial n|n<2 =1
|otherwise = n * factorial (n - 1)

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

Co je otherwise?

A

Konstanta pre True

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

Co su to incomplete patterns?

A

Neprejdeme vsetky mozne inputy pattern matchingom

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

Co vieme pouzit na “error navrat”?

A

undefined
error “error msg”
Maybe (Just/nothing)

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

Opis case notaciu

A

slide 8

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

Aky davame posledny vzor pre case?

A

_

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

Co je to dolnik?

A

Ked ho snazime s niecim porovnat tak to vrati dolnika

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

Co je to opakovanie neaonymnej premennej

A

f [x,x] = x a pod

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

Ako funguje @ as-pattern?

A

rastie (x:xs@(h:t)) = x < h && rastie xs

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

Opis let-vyraz

A

Umožňuje definovať spoločné podvýrazy pre použitie v inom výraze:
let {- väzby -} in {- výraz -}

in je to co je vysledok, let su medzipremenne

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

Co robi where?

A

Umožňuje definovať spoločné podvýrazy pre viacero podmienok porovnávania so vzorom:
slide 13

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

Co je problem pri rekurzii?

A

Casto treba zasobnik velkosti O(n)

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

Co je to chvostove volanie?

A

Hovoríme, že volanie funkcie g vo funkcii f je chvostové volanie (tail call) práve vtedy, ak toto volanie je posledným krokom vo výpočte f a výsledok volania funkcie g je teda priamo výsledkom funkcie f .

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

Daj priklad na chvostove a nechvostove volania

A

chvostové volania (g vo funkcii f ):
* f x = g (x - 1)
* f x = if (h x) then g (x - 1) else 0
nechvostové volania:
* f x = h (g (x - 1))
* f x = (g (x - 1)) + 1

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

Co je to chvostova rekurzia?

A

Rekurzívna funkcia f využíva chvostovú rekurziu (tail recursion)
práve vtedy, ak všetky rekurzívne volania f sú chvostové volania.

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

Aka je vyhoda chvostovej rekurzie?

A

Chvostová rekurzia umožňuje kompilátoru znovupoužiť aktivačný záznam na zásobníku a tak stačí zásobník veľkosti O(1).

17
Q

Co pouzivame na chvostovu rekurziu?

A

akumulator

18
Q

Ako vieme skryt funkciou do definicie inej funkcie?

A

where

19
Q

Co je to CPS (continuation passing style)?

A

slide 18

20
Q

Daj priklad na reverse ktora je chvostovo rekurzivna a ktora neni

A

slide 21