Praxisleitfaden für Funktionale Programmierung
Willkommen zum Mostly Adequate Guide zur Funktionalen Programmierung! Dieses Buch vermittelt Ihnen die Grundlagen der Funktionalen Programmierung in JavaScript.
Was Sie lernen werden
- Reine Funktionen: Vorhersehbare und testbare Codeerstellung
- Komposition: Komplexe Programme aus einfachen Funktionen aufbauen
- Currying: Funktionen zur besseren Wiederverwendbarkeit transformieren
- Funktoren & Monaden: Elegante Handhabung von Datentransformationen
- Kategorientheorie: Mathematische Grundlagen der Funktionalen Programmierung
Erste Schritte
Beginnen Sie mit Kapitel 1: Was tun wir eigentlich?, um Ihre Reise in die Funktionale Programmierung zu starten.
Über diesen Leitfaden
Dies ist ein allgemeines Buch zum funktionalen Paradigma. Wir verwenden die weltweit populärste Sprache für Funktionale Programmierung: JavaScript. Einige mögen dies für eine schlechte Wahl halten, da es gegen den vorherrschenden imperativen Programmierstil verstößt.
Ich bin jedoch überzeugt, dass es aus folgenden Gründen die beste Lernmethode ist:
Sie verwenden es täglich im Beruf So können Sie Ihr neu erworbenes Wissen direkt an realen Projekten anwenden, statt nur an Hobbyprojekten in esoterischen FP-Sprachen.
Kein vollständiges Vorwissen nötig In rein funktionalen Sprachen können Sie keine Variablenausgabe machen oder DOM-Knoten lesen, ohne Monaden zu verwenden. Hier können wir beim Lernen pragmatische Abkürzungen nehmen, während wir lernen, unseren Code zu säubern. Die gemischte Paradigmen-Architektur erleichtert den Einstieg, da Sie bei Wissenslücken auf bekannte Verfahren zurückgreifen können.
Die Sprache ist vollständig in der Lage, erstklassigen funktionalen Code zu schreiben Wir haben alle Funktionen, um mit ein oder zwei kleinen Bibliotheken Sprachen wie Scala oder Haskell nachzuahmen. Objektorientierte Programmierung dominiert zwar die Industrie, wirkt in JavaScript aber deutlich ungeschickter. Das gleicht dem Zelten an einer Autobahnraststätte oder Stepptanz in Gummistiefeln. Wir müssen überall
bindeinsetzen, damit sichthisnicht unter uns ändert, haben keine echten Klassen[^1], benötigen Workarounds für eigenartiges Verhalten bei vergessenennew-Schlüsselwörtern, und private Member existieren nur via Closures. Für viele fühlt sich FP ohnehin natürlicher an.
Typisierte funktionale Sprachen bleiben zweifellos die beste Wahl für diesen Programmierstil. JavaScript dient uns als Lernvehikel - die konkrete Anwendung liegt bei Ihnen. Die mathematischen Interfaces sind universell: Sie werden sich in Swiftz, Scalaz, Haskell und PureScript gleichermaßen zurechtfinden.
Übungen
Im gesamten Buch finden Sie Übungen im »Übungsverzeichnis« des Repositorys.
Unterstützung
Die verwendeten Hilfsfunktionen und algebraischen Datenstrukturen befinden sich im »Support-Verzeichnis«.
[^1]: JavaScript-Klassen (ab ES2015) sind hauptsächlich syntaktischer Zucker für prototypenbasierte Vererbung.