Multi-Parameter-Klassen

Eine Typklasse (Interface) ist ein einstelliges Prädikat. ein Typ erfüllt es (ist Instanz, implementiert es), oder nicht.

class Ord a where ... ; instance Ord Student where ...


Oft benötigt man mehrstellige Prädikate (Relationen)

class Brett b => Zug b z where ...
instance Zug Havannah Satz where ...
diese werden von Tupeln von Typen erfüllt (oder nicht).

(geht das in „klassischen`` OO-Sprachen? - Nein.)


Man kann zusichern, daß die Relation eine Funktion ist (functional dependency):

class Problem p i b | (p, i) -> b
zu jedem Typ-Paar (p, i) gibt es höchstens ein b mit Problem p i b-Wörterbuch.



Johannes Waldmann 2010-01-25