Monady Flashcards

1
Q

Aka je motivacia za monadami?

A

slide 1,2
Potrebujeme špeciálne skladanie viachodnotových funkcií.

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

Ako prebieha vypocet pri motvacii za monadami?

A
  • aplikovaním vnútornej funkcie g :: a → [b] na x :: a získame [b]
  • na prvky [b] aplikujeme f :: b → [c], čím získame [[c]]
  • zoznam zoznamov vyrovnáme (flatten) funkciou concat
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Co je este motivacia za monadami?

A

Rozsirenie o testovacie vypisy, ktore vieme skladat
slide 4,5

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

Co je to fish operator?

A

<=<
(<=<) :: (b->(String,c))->(a->(String,b))->a->(String,c)

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

Co treba definovat pre monadu?

A

> > =

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

Co je to&raquo_space;=?

A

m a->(a->m b)->m b
hod. v kont. odovzdá funkcii vracajúcej hod. v kont.

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

Co robi&raquo_space;?

A

m a->m b->m b

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

Co robi return?

A

vloží „čistú“ hodnotu do kontextu

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

Ake identity musi splnat implementacia return a&raquo_space;=?

A
  • return a&raquo_space;= k = k a
  • m&raquo_space;= return=m
  • m&raquo_space;= (\x -> k x&raquo_space;= h) = (m&raquo_space;= k)&raquo_space;= h
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Co je to do notacia?

A

do {e} = e
do {e; stmts} = e&raquo_space; do {stmts}
do {p ← e; stmts} = e&raquo_space;= λp → do {stmts}

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

Aky je suvis do notacie s mnozinovou notaciou?

A

slide 9

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

Ako vieme implementovat if pomocou monad, aplikativnych funktorov?

A

slide 10,11

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

Co vieme spravit pomocou monad ale nie pomocou aplikativnych funktorov?

A

slide 13

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

Porovnaj funkcie, zdroje a ciel pri porovnani apl. fun, fun a monad

A

slide 14

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

Smerom od funktorov k monádam získavame …

A

silnejšie rozhranie a
flexibilnejšiu kontrolu nad výsledkom, za cenu:
* menších záruk o výsledku,
* menšieho počtu inštancií.

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

Co je to hodnota?

A

čistá (strohá) hodnota (napr. a)

17
Q

Co je to kontext?

A

zaobaľuje čisté hodnoty (napr. f z f a)

18
Q

Co je to funktorova hodnota?

A

hodnota zabalená v kontexte (napr. f a)

19
Q

Kedy pouzit funktor?

A

Typ funkcie fmap zaručuje, že nemôže zmeniť tvar kontextu nech je funkcia g : a → b akákoľvek, pretože tá nevie nič o kontexte.
fmap g [1..10] vždy vráti desaťprvkový zoznam

20
Q

Kedy pouzit aplikativny funktor?

A

Funkcia (⟨∗⟩) môže meniť tvar kontextu pretože ako funkcie f (a → b), tak aj hodnoty f a sú vo svojom vlastnom kontexte. Vo vnútry kontextu f sú však čisté funkcie a → b a tieto nemôžu meniť kontext. Preto výsledný kontext je úplne určený kontextom argumentov a nazávisí od hodnôt v týchto kontextoch.

21
Q

Kedy pouzit monady?

A

Funkcia =&laquo_space;môže meniť tvar výsledného kontextu podľa vstupných hodnôt, pretože funkcia je typu a → f b a teda môže vytvoriť vlastný kontext z hodnoty.

22
Q

vysveti ze monada je aplikativny funktor

A

slide 17

23
Q

vysvetli ze aplikativny funktor je funktor

A

fmap f x = pure f <*> x