Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Elm (Programmiersprache)

Elm ist eine funktionale Programmiersprache für die deklarative Programmierung grafischer Oberflächen (GUIs) für Webanwendungen.

Inhalt5 Abschnitte
  1. 1. Grundlagen und Einsatzgebiet
  2. 2. Geschichte und Verbreitung
  3. 3. Zentrale Spracheigenschaften
  4. 4. Architektur und Compiler
  5. 5. Andere Implementierungen

Grundlagen und Einsatzgebiet

Elm ist eine funktionale Programmiersprache für die deklarative Programmierung grafischer Oberflächen (GUIs) von Webanwendungen. Sie kompiliert zu JavaScript und verfolgt das Ziel, typische Aufgaben bei der Programmierung grafischer Oberflächen zu vereinfachen.

Elm erschien 2012 und wurde von Evan Czaplicki entworfen. Die Sprache ist stark und statisch typisiert, steht unter der Revised-BSD-Lizenz und wurde unter anderem von Haskell, Standard ML, OCaml und F# beeinflusst. Die im Artikel angegebene aktuelle Version ist 0.19.2 (06. Juli 2026).

Geschichte und Verbreitung

Elm wurde 2012 von Evan Czaplicki als Teil seiner Masterarbeit entwickelt. 2013 stellte Prezi Czaplicki als Open-Source-Engineer ein, damit er weiter an Elm arbeiten konnte.

2016 wurde die Elm Software Foundation gegründet, um die Weiterentwicklung von Elm voranzutreiben. Ebenfalls 2016 entstand zur Unterstützung der Verbreitung die „Elm-Conf“. Weltweit wird die Programmiersprache von zahlreichen Usergroups bei regelmäßigen Veranstaltungen diskutiert.

Zentrale Spracheigenschaften

Elm bietet typische Sprachkonstrukte wie if-Ausdrücke, let-Ausdrücke und Listenoperationen.

Alle Werte in Elm sind unveränderbar (immutable). Ein einmal initialisierter Wert kann nicht mehr modifiziert werden. Für Konstrukte wie Array und Dict verwendet Elm persistente Datenstrukturen.

Alle Werte sind statisch typisiert. Jeder Wert kann mit einer Typdefinition annotiert werden. Zu den verfügbaren Typen gehören primitive Typen wie Boolean, Integer und String sowie einfache Datenstrukturen wie Listen und erweiterbare Records. Der Compiler kann bereits zur Compilezeit feststellen, ob eine Anwendung typsicher ist, und dadurch Laufzeitfehler vermeiden.

Als Ersatz für das frühere Konzept der „Signals“ wurde in Elm 0.17 der Begriff „Subscription“ eingeführt. Subscriptions dienen als Schnittstelle zu Konstrukten in JavaScript und ermöglichen die Nutzung von JavaScript-APIs sowie darauf aufbauenden Bibliotheken.

Architektur und Compiler

Die Elm-Architektur leitet sich teilweise aus dem Design und den Eigenschaften der Sprache ab. Sie soll die Wartbarkeit und das Refaktorisieren von Anwendungsteilen verbessern. Außerdem bildet sie Aufgaben wie State Management und den Umgang mit asynchronen Ereignissen ab. Elm wurde dadurch unter anderem zu einer Inspirationsquelle für Redux, eine populäre State-Management-Bibliothek im React-Ökosystem.

Der leistungsfähige Compiler soll durch aussagekräftige Fehlermeldungen den Einstieg erleichtern. Häufige, aus JavaScript bekannte Laufzeitfehler sollen bereits bei der Kompilierung erkannt und dadurch vermieden werden. Auch komplexe Build-Tools sollen für den Einstieg in Elm nicht erforderlich sein. Die Fehlermeldungen des Elm-Compilers wurden vielfach als Best Practice und Inspirationsquelle genutzt; beispielsweise verwenden auch Reason und Rust solche Fehlermeldungen.

Andere Implementierungen

Es gibt mehrere Implementierungen der Elm-API in anderen funktionalen Programmiersprachen: Miso ist eine Haskell-Implementierung, TEA eine OCaml-Implementierung, Elmish eine F#-Implementierung und Oak eine Clojure-Implementierung.

Weiterlesen