Online-Interpreter (mit Code-Beispielen): https://try.ocamlpro.com/
Üblicherweise sind wir es gewohnt, Programme und Algorithmen in prozeduraler bzw. objektorientierter
Weise zu entwickeln. Instruktionen werden Schritt für Schritt von einer
Von-Neumann-Maschine abgearbeitet und Variablen sind nichts anderes als
Referenzen auf Register bzw. Speicherbereiche. Globale
Variablen/Objekte stellen oftmals ein Risiko dar, vor allem dann, wenn
Nebenläufigkeit im Spiel ist (Beispiel Race Conditions).
Alternativ dazu existiert die deklarativ-funktionale
Programmierung, deren ausgezeichnete Parallelisierbarkeit Code
konfliktfrei auf beliebig vielen Kernen bzw. Rechnern auszuführen
ermöglicht. Nicht nur das: Schritt für Schritt haben populäre
Programmiersprachen wie Java, C++, C#, PHP und Python wiederholt
Konstrukte aus deren Umfeld übernommen. Begonnen hat dieser Siegeszug
mit den Ausnahmen und der Rekursion, über die anonymen Funktionen (Lambdas), der Typinferenz (automatische Typerkennung) bis hin zum Musterabgleich
(pattern matching). Eine Entwicklung, die auch jetzt noch zu keinem
Ende gekommen ist, wie es Java beispielhaft vor Augen führt:
Lambda-Funktionen sind ab Java 8 verfügbar, Typinferenz ist ab Java 10 möglich, Musterabgleich ab Java 21 in ausgereifter Form.