8. Elm - Eine funktionale Programmiersprache zur Entwicklung von Web-Apps

Sobald Ihr Web-Applikations-Projekt etwas größer wird, wird Ihr Javascript-Code schnell sehr unübersichtlich. Er ist auch schwer zu debuggen. Ein Problem von Javascript ist, dass es keine statischen Typen kennt. So wissen Sie oft nicht, von welchen Typ ein Objekt überhaupt ist, das eine Funktion zurückliefert. Eine andere Schwierigkeit ist das erratische Verhalten des Vergleichsoperators ==, wie zum Beispiel hier diskutiert wird. Ironischerweise ist die Hauptaussage dieses Artikels, dass == sich nicht ganz so fürchterlich benimmt wie die grüne Tabelle suggeriert; die orangene Tabelle sieht in der Tat übersichtlicher aus:

Übersichtlich organisierte Tabelle des Javasript-Operators ==. Quelle: algassert.com

Als Theoretiker fällt mir als erstes auf, dass == keine Äquivalenzrelation darstellt. So evaluieren [] == '' und '' == [[]] zu true, jedoch [] == [[]] zu false. Das ist auch nicht weiter verwunderlich, denn selbst [] == [] evaluiert zu false. Der Operator ist also nicht einmal reflexiv.

Viele seltsame Features von Javascript lassen sich im Nachhinein leider nicht mehr ändern, weil es mittlerweile viel Code gibt, der darauf aufbaut, also zum Beispiel auf dem genauen Verhalten von ==, und daher nicht mehr funktionieren würde, wenn plötzlich sämtliche Browser ihre Interpretation von == durch eine vernünftigere ersetzen würden.

Allerdings gibt es mehrere Ansätze, Javascript durch eine sorgfältiger entworfene Programmiersprache zu ersetzen bzw. umgehen. In diesem Kapitel will ich Ihnen einen recht radikalen Ansatz vorstellen: Elm. Dies ist eine rein funktionale Programmiersprache mit sehr strengem statischen Typensystem. Der Elm-Code lässt sich dann zu traditionellem Javascript-Code kompilieren und resultiert in einer normalen Webseite mit wenig HTML und sehr viel Javascript. Das strenge Typen-System hat zur Folge, dass das Programmieren anfangs zwar etwas anstrengender ist, sie aber praktisch nie Laufzeitfehler bekommen. Ihr Code wird also nie abstürzen.

Ich gebe Ihnen in diesem Kapitel einen Crashkurs in Elm als funktionaler Programmiersprache. Dann schauen wir uns an, wie wir Elm verwenden, um die Client-Seite einer Web-Applikation zu schreiben.

Auf den Rechnern im Rechnerraum sollte Elm bereits installiert sein. Wenn Sie es auf Ihrem persönlichen Rechner installieren wollen, so brauchen Sie zuerst einmal node. Installationsanleitungen und ausführlichere Tutorials finden Sie hier:

Legen Sie ein Verzeichnis an, in welchem Sie Ihre Elm-Programme speichern wollen. Ich nenne dieses Verzeichnis der Konkretheit willen elm. Gehen Sie auf der Konsole in das Verzeichnis elm und tippen

elm init

und beantworten die folgende Frage mit Y. Es gibt jetzt im Verzeichnis elm einen Unterordner src. Erschaffen Sie mit Ihrem Code-Editor eine neue Datei und speichern Sie sie als Test.elm im Order elm/src. Schreiben Sie in die erste Zeile von Test.elm die Zeile

module Test exposing (..)

Das exposing (..) bedeutet, dass alles, was Sie in diese Datei schreiben, von außen sichtbar sein soll, und das Test sagt, dass es unter dem Namen Test zu finden ist.