  | 
                        
						    
                 
                
                
    
        Übersicht: Einleitung
        
 
  
    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.
     
     
     
	- 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.
 
       
    
              |