Einleitung


 ... [ GADTs in Haskell ] ... [ << Inhaltsverzeichnis ] ... [ Von ADTs zu GADTs >> ] ...  




Übersicht: Einleitung

  Worum geht es?
  Vorwort
  Ziele



Worum geht es?

Verallgemeinte Algebraische Datentypen (kurz GADTs[1], auch Generalisierte Algebraische Datentypen) versuchen einige Schwächen des Haskell-Typsystem auszuräumen.

Dies geschieht durch eine Erweiterung des Typsystems, bezogen auf Algebraische Datentypen.

Diese Seminararbeit gibt einen Einblick, welche Erweiterungen GADTs bieten und wie man diese sinnvoll anwendet. Sie richtet sich an Leser, die grundlegende Haskell-Kenntnisse haben.

Vorwort

GADTs bieten nicht viele Neuerungen; allerdings sind die dahintersteckenden Ideen nicht auf Anhieb verständlich. Daher wird in dieser Seminararbeit relativ viel mit verschiedenen Beispielen demonstriert, was für Auswirkungen der Einsatz von GADTs hat. Die Beispiele sollen zeigen, wann GATDs sinnvoll einsetzbar sind und wann nicht.

Ziele

Die Ziele einer statisch typisierten Hochsprache wie Haskell sind im Wesentlichen, die Menge der sinnlosen, vom Compiler akzeptierten Programme einzuschränken, und die Menge der sinnvollen, vom Compiler nicht akzeptierten Programme ebenfalls einzuschränken.

In vielen Fällen funktioniert dies schon sehr gut. Es gibt jedoch immer noch Datentypen, dessen Invariante erst zur Laufzeit überprüft werden kann. Die Invariante muss zudem auch vom Entwickler manuell aufgerufen werden, um effektiv zu sein.

Mit dem Konzept der GADTs ist es möglich, für bestimmte Datenstrukturen die Invariante durchs Typsystem überprüfen zu lassen.

Dies hat den Vorteil, dass es dann nicht mehr möglich ist, sinnlose Werte zu konstruieren. Zudem sind Invarianten wesentlich kürzer formulierbar.

Ein weiterer Vorteil von GADTs ist es, dass bestimmte partiell definierte Funktionen nun total definiert werden können. Des Weiteren können wir für bestimmte Funktionen exaktere Typen definieren.
  1. Die Worte GADT sowie ADT sind Abkürzungen. Umgangssprachlich werden die Plurale (sowie Genitive) von Abkürzungen durch Anhängen eines "s" gebildet. Dies ist zwar nicht korrekt, wird aber in dieser Arbeit so verwendet, um zum Einen eine Unterscheidung zwischen Singular und Plural bzw. Genitiv und restlichen Kasus zu ermöglichen, und zum Anderen näher an der meist verwendeten Aussprache zu bleiben.



 ... [ GADTs in Haskell ] ... [ << Inhaltsverzeichnis ] ... [ Von ADTs zu GADTs >> ] ... [ nach oben ] ...