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) -> bzu jedem Typ-Paar (p, i) gibt es höchstens ein b mit
Problem p i b
-Wörterbuch.