Zurück Weiter Inhalt

1.8 Data

In Haskell werden abstrakte Datentypen mit dem Schlüsselwort data definiert. In der englischen Literatur werden sie als "algebraic Datatype" bezeichnet.

Die Definition selber ist stark an abstrakte Syntax angelehnt. Sie gebinnt mit dem Schlüsselwort data, gefolgt von dem Namen des neuen Typs. Darauf folgt ein Gleichzeichen. Die rechte Seite beseht aus Konstruktoren und Verknüpfungen dieser. Ein Konstruktor besteht aus einem Namen gefolgt von Parametern. Parameter sind Basisdatentypen oder abstrakte Datentypen. Die Verknüpfungsoperatoren sind [ ] für eine Liste oder | für eine Alternative (oder).

Syntax

data TypeName = Defintion
Definition = ( Konstruktor | Typ )*
Konstruktor = Name Typ*

Verknüpfungsoperatoren
| OR
[ ] LISTE

Beispiel: Person mit Name, Alter, Geschlecht und Liste von z.B. Kindern

data People = Person Name Age Gender [ People ]
newtype Name = String
newtype Age = Int
date Gender = Female | Male

Durch die Konstruktion eines abstrakten Datentypes erhält dieser einen eindeutigen Typ. Beim Pattern Matching kann der Compiler Typchecks durchführen. Ein Parameter vom Typ People würde z.B. nicht mit einem Tupel (String, Int, Gender) übereinstimmen.


Zurück Weiter Inhalt