C++17: Formale Grundlagen für funktionale Programmierung
Formalitäten
Schon der aktuelle Standard der objektorientierten Sprache C++ enthält grundlegende Funktionen für die funktionale Programmierung. Mit Concepts Lite und weiteren funktionalen Konzepten soll der kommende Standard C++17 den an eine moderne Programmiersprache gestellten Anforderungen noch mehr entsprechen.
Mit der Verabschiedung des kommenden Standards wird die objektorientierte Programmiersprache C++ diverse neue Features erhalten, die auf den ersten Blick nicht viel miteinander gemein haben. So werden die Algorithmen der Standard Template Library (STL) mit der Range-Bibliothek direkt auf den Containern agieren können. Concepts Lite befähigen C++17, Anforderungen an Template-Parameter zu stellen, mit std::optional erhält die Sprache einen Datentyp, der einen Wert besitzen kann oder auch nicht. Die Komposition asynchroner Funktionsaufrufe soll die Unzulänglichkeiten von std::future in C++11 beheben.
Hinter dieser Aufzählung zukünftiger Features steckt aber deutlich mehr. Sie basieren auf mächtigen funktionalen Konzepten wie Funktionskomposition, Typklassen und Monaden. Diese Konzepte sollen C++17 auf deutlich formalere Grundlagen stellen. Am schönsten lässt sich die Formalisierung der Sprache – wie schon im iX-Artikel „Form follows Function“ [1] – mithilfe von Haskell aufzeigen, das seine Wurzeln in der Mathematik hat.