WikiDer > Ocaml

Ocaml
Ziel Camli
ParadigmaFunktional, objektorientierten
erschien1996
Entworfen vonXavier Leroy und andere
Entwickelt voninria (Frankreich)
Aktuelle Version3.10.2
Typensystemstreng, statisch
DialekteF#, JoCaml, MetaOCaml, OcamlP3l
Beeinflusst vonKamllicht, ML
Einfluss aufReichweite
LizenzCompiler: QPL, Bibliotheken: LGPL
Webseitehttp://caml.inria.fr/
Portal  Portalsymbol  Informatik

Ocamli (Ziel-CAML) ist die Hauptimplementierung der Programmiersprache Camli (Kategorische abstrakte Maschinensprache), ein Dialekt von ML, entwickelt auf dem inria[1] und der Ecole Normal Superieure.[2]

Geschichte

Caml ist statisch typisiert, streng bewertet, und verwendet automatisch Speicherverwaltung durch Müllabfuhr.

Die erste Caml-Implementierung in den 1980er Jahren wurde in . geschrieben lispeln und erhielt wegen seiner hohen Speicher- und CPU-Auslastung den Spitznamen Schweres Camli. Sein Nachfolger, Caml-Licht, wurde implementiert in C von Xavier Leroy und Damien Doligez. Sie haben auch ein leistungsstarkes Modulsystem hinzugefügt.

OCaml

OCaml ist die Hauptimplementierung von Caml. OCaml bietet eine Reihe zusätzlicher Funktionen, wie z Objekt orientierte Programmierung.

OCaml besteht aus einem interaktiven Dolmetscher, ein Byte-CodeCompiler und ein sogenanntes nativer Compiler das optimiert ausführbare Dateien produziert. OCaml verfügt über eine umfangreiche Sammlung von StandardBibliotheken die die Sprache für die gleichen Aufgaben geeignet machen wie zum Beispiel Python oder perl.

Eigenschaften

Wie alle ML abgeleitete Sprachen, die OCaml verwendet Typ-Inferenz. Dies bedeutet, dass der Compiler automatisch den Typ aller Ausdrücke herleitet. In Kombination mit statisches Tippen (Englisch: statisches Tippen) stellt die Typinferenz sicher, dass bestimmte Fehlerarten, die normalerweise erst während der Programmausführung auftauchen, zur Kompilierzeit entdeckt werden Datentypen explizit angeben (im Gegensatz zum Beispiel Java).

im Gegensatz zu anderen funktionale Programmiersprachen OCaml ist sehr effizient. Dies liegt zum Teil daran, dass die Kombination von Typrückschluss und statischer Typisierung die Typprüfung zur Laufzeit weitgehend überflüssig macht. Auch der OCaml-Compiler nutzt die Codeanalyse für weitreichende Optimierungen und die Standardbibliotheken werden sehr effizient implementiert.

Neben der traditionellen funktionalen Art der Programmierung unterstützt OCaml auch zwingende Programmierung (OCaml ist nicht streng funktional: es ist möglich Nebenwirkungen erstellen) und Objekt orientierte Programmierung.

Weitere Funktionen:

Beispiele

Hallo Welt

Ein Programm mit folgendem Inhalt, gespeichert als hallo.ml:

print_endline"Hallo Welt!";;

Diese lässt sich wie folgt zusammenstellen:

$ ocamlc hello.ml -o hallo

Der Befehl zum Ausführen lautet:

$ ./halloHallo Welt!$

Schnelle Sorte

Dies ist eine Implementierung von schnelle Sorte:

Passt aufrecschnelle Sorte=Funktion|[]->[]|Drehpunkt::sich ausruhen->Passt aufist kleinerX=X<DrehpunktimPasst auflinks,Recht=aufführen.Partitionist kleinersich ausruhenimschnelle Sortelinks@[Drehpunkt]@schnelle SorteRecht

Siehe auch

Externe Links