OCaml Konzepte: Grundlegende Konzepte - Summentypen |
Summentypen realisieren unter anderem die Möglichkeit der Verwendung von Aufzählungstypen.
Der vorrangige Einsatzbereich ist jedoch die Definition eigener rekursiver Datenstrukturen. Komplexe, zusammengesetzte,
parametrisierbare Datenstrukturen (z.B. Bäume) für beliebige Datentypen lassen sich einfach als Summentyp erstellen
und vor allem verarbeiten.
Summentyp |
|
Beispiel: Aufzählungstyp |
|
Aufzählungstypen sind in funktionalen Sprachen in der Regel Spezialfälle von Summentypen in Form einer Typdefinition mit Hilfe von Konstruktoren, die für jeweils eine Konstante stehen.
Erstellung und Verarbeitung komplexer Datenstrukturen | ||
Beispiel: Binär-Baum für beliebige Datentypen |
|
|
Erzeugung durch Konstruktoren |
||
# Node(1, Leaf, Leaf);; - : int btree = Node(1, Leaf, Leaf) |
Node und Leaf sind hierbei Konstruktoren, also Funktionen die eine (mit Werten initialisierte) Variante des Summentyps
zurückliefern.
Der Resultatwert des Konstruktors Node steht dabei für eine benannte Konstante.
Verarbeitung erfolgt durch Pattern Matching | ||
Beispiel: Kardinalität von Binär-Baum |
|
|
Zugehörigkeit zu Binär-Baum |
|
Hinweis:
"#" kennzeichnet Eingaben im OCaml Interpreter,
"val" bzw "- :" das Ergebnis der Auswertung und automatischen Typanalyse inkl. der vom System inferierten Typen.