Elm - Architektur
Seiteneffekte
Elm ist eine rein funktionale Sprache. Das bedeutet, dass Funktionen keine Seiteneffekte haben, also nichts außerhalb der Funktion verändern. Es dürfen keine Dateien geschrieben werden oder Daten ins Netzwerk gesendet werden. Außerdem müssen Funktionen immer das gleiche Ergebnis liefern, wenn sie mit den gleichen Parametern aufgerufen werden. Streng genommen darf eine Funktion also nicht einmal eine Ausgabe auf dem Bildschirm erzeugen.
Ein Programm, das bei der Ausführung keine Ausgabe erzeugen darf und keine Daten speichern kann, ist im Normalfall natürlich nicht besonders nützlich. Die Frage, die sich also stellt, ist: Wie können Elm-Programme trotzdem mit der Außenwelt interagieren?
The Elm Architecture - TEA
Elm löst dieses Problem mit der sogenannten Elm Architecture. In englischsprachigen Texten wird sie oft mit TEA abgekürzt. Die Grundidee dabei ist, dass das eigentliche Elm-Programm rein funktional bleibt, während alle Seiteneffekte von der Elm-Laufzeit-Umgebung, die beim Übersetzen des Elm-Programms in JavaScript erzeugt wird, übernommen werden. Die folgende Grafik verdeutlich das Konzept: