Funktory Flashcards

1
Q

Aka je motivacia za funktormi?

A

Mame nejake funkcie, ale chceme ich pouzit na hodnoty v kontexte, napr Maybe. Chceme to spravit bez zbytocneho opakovania

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

Co robime s funkciou f :: a -> b?

A

Pozdvihneme (lift) na fm :: Maybe a -> Maybe b

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

Co nam staci zadefinovat pre Funktory?

A

fmap :: (a -> b) -> f a -> f b

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

Co robi <$ ?

A

a -> f b -> f a

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

Ake identity musi splnat fmap?

A

fmap id=id
fmap (f . g) = fmap f . fmap g

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

Co robi $>?

A

Functor f=>fb->a->fa

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

Ako piseme aj fmap?

A

<$>

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

Co robi void?

A

Functor f=>fa->f()
void x = () <$ x

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

Aka je motivacia za aplikativnymi funktormi?

A

potrebujeme aplikovať binárnu
funkciu na dve hodnoty uložené v kontexte Maybe

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

Aka je signatura <*>?

A

pre maybe konkretne
Maybe (a->b)->Maybe a->Maybe b
aplikuje funkciu v kontexte na hodnotu v kontexte

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

Preco spadne (++) <$> Just “AB” <$> Just “BA”?

A

Lebo (++) <$> Just “AB” je typu Maybe (String -> String)

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

Co musime implementovat pre aplikativne funktory?

A

pure, <*>

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

Co robi pure?

A

pure:: a->f a
vloží „čistú“ hodnotu do kontextu

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

Ake identity musi splnat pure a <*>?

A

pure id <> v = v
pure (.) <
> u <> v <> w = u <> (v <> w)
pure f <> pure x = pure (f x)
u <
> pure y = pure ($ y) <*> u

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

Co vyhodi ako vysledok [(+), ()] <> [1, 2] <*> [10, 20]?

A

[11,21,12,22,10,20,20,40]

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

Co su teda I,S,K podla aplikativnych funktorov?

A

S=(⟨∗⟩) K=pure, I=SKK