OCaml Konzepte: Weiterführende Konzepte - Das Modulsystem von OCaml |
Konzept |
|
|
Komponenten |
OCaml stellt ein mächtiges System zur Strukturierung und einfachen Wiederverwendbarkeit von Programcode zur Verfügung.
Dieses System besteht aus den drei Komponenten Signatur, als Konzept der Bereitstellung von aussagekräftigen Schnittstellen,
Strukturen zur Kapselung von einzelnen, elementaren Programmteilen, und Funktoren, welche Module auf andere Module abbilden
und das Konzept der Parametrisierung auf Programmteile ausweitet.
Man erkennt hierbei gewisse Ähnlichkeiten bzw. Gemeinsamkeiten zu objektorientierten Designkonzepten, die OCaml ebenfals dem Nutzer bereitstellt.
Signatur | Deklaration von Typen und Funktionen | |
Syntax: |
|
Struktur | Implementation der Deklarationen | |
Syntax: |
|
Funktor |
|
|
Syntax: |
|
Module sind das grundlegende Strukturierungsmittel für größere Programme und beschreiben seperat
kompilierbare Einheiten.
Standard ML war die erste Sprache, für die ein theoretisch fundiertes, parametrisches Modulsystem entworfen
wurde.
Die Zuordnung einer Signatur zu einer Struktur beschränkt den Zugriff von außen auf die
deklarierten Typen und Methoden (Sichtbarkeit). Eine Modulsignatur fungiert somit als Schnittstelle für Module und
kann als Interface für solche betrachtet werden.
Module können geschachtelt werden und Module können in andere Module eingebunden werden (Erweiterbarkeit).
Es besteht dabei zum einen die Möglichkeit den Namensbereich einer Schnittstelle bzw. eines Moduls zu öffnen
(eingeleitet durch das Schlüsselwort open), zum anderen kann der Inhalt einer anderen Schnittstelle bzw. eines Moduls
inkludiert werden (eingeleitet durch das Schlüsselwort include).
Die grundlegende Idee, Module mit Hilfe von abhängigen Typen (dependent types) zu typisieren spiegelt sich im Konzept
eines Funktors wieder, der Module auf Module abbildet.
Die Anwendung eines Funktors ist generativ, was bedeutet, dass seine Anwendung jeweils neue Typen erzeugt.
Hinweis:
"#" kennzeichnet Eingaben im OCaml Interpreter,
"val" bzw "- :" das Ergebnis der Auswertung und automatischen Typanalyse inkl. der vom System inferierten Typen.