i

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:

Gruppieren
  1. Das initiale Datenmodell wird an die Laufzeit-Umgebung gegeben.
  2. Die view-Funktion wird mit dem Datenmodell aufgerufen...
  3. ... und berechnet daraus die Html-Darstellung.
  4. Die Laufzeit-Umgebung stellt die Webseite dar.
  5. Der Benutzer interagiert mit der Seite z.B. durch Klick auf den Button zum Erhöhen des Schlüssels.
  6. Die update-Funktion wird mit der Nachricht Erhoehen und dem aktuellen Datenmodell aufgerufen...
  7. ... und berechnet daraus das neue Datenmodell, womit der Kreislauf von vorne beginnt.

Klicke auf die einzelnen Schritte zur Veranschaulichung.

Suche

v
8.2.3.5.1.3
dev.inf-schule.de/deklarativ/fp_elm/dynamischewebseiten/caesardynamisch/lernstrecke/tea
dev.inf-schule.de/8.2.3.5.1.3
dev.inf-schule.de/@/page/UUA1kxTU3FokyYNd

Rückmeldung geben