OCaml Konzepte: Grundlegende Konzepte - Listen |
Da Listen in der Regel ein elementares und häufig eingesetztes Sprachkonstrukt darstellen, ist in OCaml eigens dafür ein teilweise an Lisp angelehnter Datentyp integriert.
Liste | Leere oder nicht leere Sequenz von Elementen gleichen Typs | |||
Konstruktoren | [] | Leere Liste | ||
e::l | Neue Liste mit
|
|||
[e1; ... ; en] | Liste der Elemente e1 bis en |
Listen sind parametrisierte Summentypen ! | ||
Beispiel: Interne Realisierung des Listentyps |
|
Listen in OCaml sind parametrisierte Summentypen, da eine Liste entweder die leere Liste beschreibt oder eine (konstruierte) Liste beliebigen Typs, bestehend aus einem Element beliebigen Typs (Label) und einer Restliste des selben beliebigen Typs.
Beispiel: Liste von Funktionen |
|
Beispiel: Mapping auf Listen |
|
Anwendung: |
# map incr [1; 2; 3; 4];; - : int list = [2; 3; 4; 5] |
Die Mächtigkeit der Ausdruckskraft funktionaler Programmiersprachen zeigt sich durch die Einfachheit bei der Manipulation und Berechnung von Werten.
Hier sei als Beispiel das Mapping von polymorphen Funktionen auf polymorphen Listen genannt.
Das Mapping bezeichnet hierbei die Anwendung einer beliebigen Funktion auf alle Elemente einer Liste beliebigen Typs.
Hinweis:
"#" kennzeichnet Eingaben im OCaml Interpreter,
"val" bzw "- :" das Ergebnis der Auswertung und automatischen Typanalyse inkl. der vom System inferierten Typen.