JoeCaml OCaml Konzepte: Grundlegende Konzepte - Das Typensystem von OCaml

[weiter]

Das Typensystem von OCaml

Typen Beschreibung für eine Menge von Werten
Werte Zahlen, Zeichen, Listen, Funktionen, ...


[weiter]

Die ML-Sprachfamilie ist statisch und streng getypt.
Das heißt der Typ aller Variablen und Konstanten wird vollständig und statisch zur Übersetzungszeit ermittelt.

Automatische Typenanalyse Typinferenz und Typsynthese

Unter Typinferenz versteht man die Bestimmung von Typen zu ungetypten Ausdrücken, jedoch sind nicht alle Ausdrücke typisierbar.
OCaml ist in der Lage, mittels des Mechanismus der automatischen Typenanalyse durch Typinferenz und Typsynthese, den Typ eines Ausdrucks ohne vorgegebene Typeninformation selbst herzuleiten.
Dabei geht OCaml wie folgt vor:

Vorgehensweise

Jedem Unterausdruck wird ein Typ zugewiesen
Die Typen der Unterausdrücke werden zu einem Gesamtausdruck synthetisiert


Primitive Datentypen in OCaml:

Typ Operatoren
unit keine
bool not , && , || , ...
int + , * , - , / , = , <> , < , > , ...
float +. , *. , -. , /. , < , > , ...
char = , <> , < , > , ...
string = , <> , < , > , ...

Alle in einer modernen Hochsprache benötigten bzw. gewünschten Datentypen stehen durch die in der Kern-Bibliothek vordefinierten Typen zur Verfügung.
Der Typ unit entspricht dem Datentypen void in C und wird für resultatlose Funktionen (vorwiegend Prozeduren zur E\A-Verarbeitung) verwendet, oder dient als Platzhalter, wenn keine Werte übergeben werden müssen.
Es existieren unterschiedliche arithmetische Operatoren jeweils für Ganzzahlarithmetik und Fließkommazahlarithmetik.
Die relationalen Operatoren (zweiargumentige vordefinierte Funktionen) sind überwiegend polymorph, d.h. für mehrere Datentypen definiert.

Ausserdem bietet OCaml die integrierten Datentypen Array und Liste, sowie die Möglichkeit eigene Datentypen (Aggregattypen) wie Records, Unions und Tupel zu definieren.


[ Seminar "Programmierkonzepte und Programmiersprachen" ] [ Gliederung ] [ Grundlegende Konzepte ] [ Die Auswertungsstrategie von OCaml ]