Polymorfizmus, typové triedy a algebraické dátové typy Flashcards
Co je to parametricky polymorfizmus?
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
Ako robime parametricky polymorfizmus v haskelli?
Napr dlzku zoznamu vieme pre kazdy zoznam, tak typ bude [a], nie napr [Int]
Co je to ad-hoc polymorfizmus?
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
Ako vyzeraju typove triedy?
slide 4
class Comparable a where
hlavicky funkcii + mozu byt aj defaultne implementacie kde nezalezi na type
Ako vyzeraju instancie typovych tried?
instance Comparable Int where
definicie funkcii
Ako vyznacujeme co aspon treba
{-# MINIMAL (eq|neq),(lt|cmp) #-}
„|“ predstavuje „alebo“ a „,“ predstavuje „a zároveň“
Co vypise GHCI po zadaní„:i Comparable“?
GHCi vypíše rozhranie typovej triedy, minimálnu požadovanú implementáciu a jednotlivé inštancie:
Ake pozname standartne typove triedy?
Eq, Comparable, Ord, Enum, Bounded a pod.
Co obsahuje Eq?
==, /=
Co obsahuje Ord?
compare, max, <, …
Co obsahuje bounded?
minBound, maxBound
Co obsahuje Num?
+, -, *, negate a pod
co obsahuje Show?
hlavne zmenu typu na string
Ako vyzera zaznam v haskelli?
data Student = MkSt String String Int String
st = MkSt “Janko” “Hraško” 4 “šikovný”
Co je Student a MkSt?
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