Polymorfizmus, typové triedy a algebraické dátové typy Flashcards

1
Q

Co je to parametricky polymorfizmus?

A

Parametrický polymorfizmus, umožňuje pri definícii funkcie použiť typové premenné namiesto konkrétnych typov. Takéto funkcie potom môžu byť podľa potreby inštancované pre konkrétne typy. Všetky inštancie zdieľajú rovnakú implementáciu (kód), čiže vykazujú rovnaké správanie.
Java: Generics a pod

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

Ako robime parametricky polymorfizmus v haskelli?

A

Napr dlzku zoznamu vieme pre kazdy zoznam, tak typ bude [a], nie napr [Int]

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

Co je to ad-hoc polymorfizmus?

A

Ad-hoc polymorfizmus, umožňuje rôzne správanie pre rôzne inštancie polymorfickej funkcie. Pre rôzne inštancie typovej premennej existujú jej rôzne implementácie.
Java: preťaženie (overloading) metód, operátorov

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

Ako vyzeraju typove triedy?

A

slide 4
class Comparable a where
hlavicky funkcii + mozu byt aj defaultne implementacie kde nezalezi na type

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

Ako vyzeraju instancie typovych tried?

A

instance Comparable Int where
definicie funkcii

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

Ako vyznacujeme co aspon treba

A

{-# MINIMAL (eq|neq),(lt|cmp) #-}
„|“ predstavuje „alebo“ a „,“ predstavuje „a zároveň“

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

Co vypise GHCI po zadaní„:i Comparable“?

A

GHCi vypíše rozhranie typovej triedy, minimálnu požadovanú implementáciu a jednotlivé inštancie:

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

Ake pozname standartne typove triedy?

A

Eq, Comparable, Ord, Enum, Bounded a pod.

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

Co obsahuje Eq?

A

==, /=

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

Co obsahuje Ord?

A

compare, max, <, …

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

Co obsahuje bounded?

A

minBound, maxBound

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

Co obsahuje Num?

A

+, -, *, negate a pod

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

co obsahuje Show?

A

hlavne zmenu typu na string

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

Ako vyzera zaznam v haskelli?

A

data Student = MkSt String String Int String
st = MkSt “Janko” “Hraško” 4 “šikovný”

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

Co je Student a MkSt?

A

Student – nový typ (musí začínať veľkým písmenom)
MkSt – dátový konštruktor (musí začínať veľkým písmenom)
MkSt::String->String->Int->String->Student

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

Ako vieme zjednodusit vytahovanie jendotlivych poloziek z typu?

A

Pouzijeme konstruktor s pomenovanim

data Student
= MkSt {meno :: String,
priezvisko :: String, rocnik :: Int, poznamka :: String}

Mozem potom aj volat MkSt {priezvisko = “Hrach”, meno = “Jan”, poznamka = “OK”, rocnik = 4}

17
Q

Ako vieme aktualizovat v haskelli?

A

st2 :: Student
st2 = st {poznamka = “KO”}

su to ale rozdielne veci, st sa nezmenil

18
Q

Co to su vymenovane typy?

A

data Bool = False | True
maju datove konstruktory bez argumentov

19
Q

Kedy je datovy typ polymorfny?

A

Pokiaľ je dátový typ parametrizovaný typovým parametrom, tak hovoríme, že je polymorfný. (Platí pre záznamy, aj var. typy.)

20
Q

Opis Either

A

dataEitherab=Lefta|Rightb

21
Q

opis rekurzivne typy

A

slide 24