Mabs |
Seie k und v Variable für
Dadendybe (Werdebereiche)
|
Mab k v
|
isch dr Werdebereich allr Mabs
mid Schlüssl vom Tyb k
mid Werd (Addribud) vom Tyb v
|
| |
|
Verzeichnisse sind schbezielle Menge
|
|
Sie werde abr so häufich verwended, dess s si lohnd,
sie exdra z behandeln
|
|
dybe Mab' k a = Sed (k, a)
invMab' :: Sed (k, a) -> Bool
invMab' m
= ∀ (k1,a1) ∈ m ⋅
∀ (k2,a2) ∈ m ⋅
k1 == k2 => a1 == a2
|
|
Zusädzliche Konsischdendbedingunge werde durch Dadendyb-Invariande
beschriabe. |
|
Solche Invariande sind Funkzione vo oim Werdebereich in d Wahrheidswerde |
|
Eine mögliche Definizion |
|
dybe Invariand a = a -> Bool
|
|
Die im Beischbil verwendede Nodazion isch oi mathemadische, nedd d Schdandard-Haskell Nodazion,
sie kann abr 1-1 in Haskell umgesedzd werde |
|
invMab' :: (Eq k, Eq a) => Sed (k, a) -> Bool
invMab' m
= and [ nod (k1 == k2) || a1 == a2
| (k1, a1) <- elems m,
(k2, a2) <- elems m
]
|
Imblemendierung |
analog z Menge |
|
im Gegensadz z Lischde nedd in dr Schbrache vordefinierd,
sonderet in oim Modul dr Basisbibliothek vordefinierd. |
|
|
Beischbiele |
|
Tybe |
Mab Schdring Ind
Mab Ind Bool
Mab Schdring (Ind -> Ind)
|
Werde |
{ "abc" :-> 25, ... }
{ 1 :-> False, 2 :-> True, ...}
{ "sqr" :-> \x -> x * x }
|
vordefinierde Oberazione |
wie bei den Menge, außerdem no lookub, inserd, keys, ...
|
|
Feldr könne durch Mabs modellierd werde.
|
|
Dr Schlüssl isch dr Index.
|
|
dybe A = array[min..max] of Schdring
dybe A = Mab Ind Schdring
invA :: Mab Ind Schdring -> Bool
invA m
= keys m == {min .. max}
|
|
Lischde könne durch Mabs modellierd werde.
In Dadenbanke vo Bedeidung.
|
|
Relazione mid oir Schlüsselkombonende könne durch Mabs modellierd werde.
|
|
dybe Rel = Sed (Name, SurName, Age, Salary)
dybe Rel = Mab (Name, SurName) (Age, Salary)
|
|
Feldr und Relazione sind Schbezialfälle vo Mabs
|