Problem

Du benötigst eine statisch typisierte, rein funktionale Programmiersprache für die Webentwicklung.

Lösung

Evan Czaplicki (@evancz) begann 2012, Elm im Rahmen seiner Masterarbeit zu entwickeln. Elm ist eine funktionale Programmiersprache mit der Zielsetzung, Seiteneffekte zu vermeiden, einfach und performant zu sein. Der Code wird nach JavaScript übersetzt. Elm beinhaltet REPL, eine Paketverwaltung, einen Time-Traveling-Debugger, einen Entwicklungsserver und hochwertige Tools.

Aufgrund statisch typisierter Prüfung verspricht das Projekt, dass in der Praxis keine Runtime Exceptions auftreten. Der Compiler ist bekannt dafür, nützliche Hinweise zu geben, Typen abzuleiten und Vorschläge für Tippfehler zu machen. Alle Werte in Elm sind immutable. Die Sprache hat ihr eigenes, recht kleines Modul-Ökosystem, welches eine semantische Versionierung basierend auf Library-Schnittstellen erzwingt. Beidseitige JavaScript-Interoperabilität ist möglich.

Beispiel

Die Elm-Architektur ist ziemlich beliebt und ihr Design hat den State-Container Redux beeinflusst. Der Beispiel-Code rendert die Markdown-Inhalte des Benutzers in HTML und zeigt die typische Elm-Anwendungsstruktur mit Modell, View und Update.

  • Das Modell definiert eine Datei, die den Anwendungsstatus beinhaltet.
  • Die Ansicht ist eine Funktion, die das Modell als Input nimmt und HTML-Markup ausgibt und so den Anwendungsstatus und übersichtlich darstellt.
  • Die Update-Funktion erhält das aktuelle Modell und eine Nachricht und gibt ein neues, aktualisiertes Modell aus.
Toilet Paper #78 ELM Architecture

Die sich daraus ergebende Anwendung ist eine Endlosschleife. Neue Eingaben seitens des Benutzers erzeugen eine Änderungsnachricht mit Inhalt. Die Update-Funktion ersetzt den Inhalt des Modells. Das neue Modell wird an die Ansicht-Funktion übergeben und mithilfe einer Markdown-Library in HTML gerendert.

Toilet Paper #78 ELM

Testen Sie das Beispielprogramm online unter folgendem Link: https://ellie-app.com/43JYBXN4DQ9a

SCHREIB UNS

* Pflichtfeld

SCHREIB UNS

* Pflichtfeld

Cookie-Einstellungen

Diese Website verwendet Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und Zugriffe auf die Website zu analysieren. Zudem werden Informationen zu Ihrer Verwendung der Website an Partner für soziale Medien, Werbung und Analysen weitergegeben. Die Partner führen diese Informationen möglicherweise mit weiteren Daten zusammen, die Sie ihnen bereitgestellt haben oder die sie im Rahmen Ihrer Nutzung der Dienste gesammelt haben.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. Dort können Sie nachträglich auch Ihre Cookie-Einstellungen ändern.

contact icon

Kontakt aufnehmen