Artikel über Typklassen in Scala


Typklassen sind ein nützliches Feature in funktionalen Sprachen wie Haskell. Dabei handelt es sich nicht um Klassen im objektorientierten Sinne, sondern um eine Art Äquivalenzklassen von Operationen. Will man z.B. in Java oder Scala Algorithmen oder Datenstrukturen implementieren, die das Konzept einer Ordnungsrelation benötigen, greift man auf Interfaces bzw. Traits wie Comparable oder Ordered zurück – was den großen Nachteil hat, dass man einen Datentyp nicht nachträglich diese Eigenschaft verpassen kann, wenn man dessen Quellcode nicht kennt. Haskell geht sozusagen umgekehrt vor, es definiert nachträglich, welche Datentypen irgendwie geordnet sind (und wie die entsprechenden Methoden dazu implementiert sind). Diese Technik ist also wesentlich flexibler als Vererbung: In einem gewissen Sinne ist es so, als ob man einer bestehenden Klasse nachträglich ein Interface (mit entsprechend implementierten Methoden) „ankleben“ könnte.

Nun ist Scala im Gegensatz zu Java ausdrucksstark genug, um dieses interessante Feature recht einfach zu imitieren, und anstatt selbst herumzustümpern verweise ich einfach auf ein paar interessante Artikel zu diesem Thema:

Nebenbei möchte ich nicht versäumen, auf den Release Candidate 7 für Scala 2.8 hinzuweisen, insbesondere da es aus gutunterrichteten Kreisen heißt, dass in etwa ein, zwei Wochen Scala 2.8 kommen wird, wenn nicht ein wirklich böser Bug sein häßliches Haupt erhebt. Das finde ich spannender als Deutschland gegen Argentinien…

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s