Exkurs - Module
Programmieren in der REPL
Wir gehen von folgender Implementierung der Funktion gewichtQuader
aus:
gewichtQuader laenge breite hoehe =
laenge*breite*hoehe*2.7
Aufgabe 1
- Kopiere die Funktion in die REPL oder gebe sie ein. Rufe die Funktion mit Beispielwerten auf.
- Verändere die Konstante dann z.B. auf den Wert 2.8. und rufe die Funktion wieder mit Beispielwerten auf.
- Beschreibe welche Nachteile das Programmieren in der REPL hat.
Ein Elm-Projekt anlegen
Um die Funktion dauerhaft in einer Datei zu speichern und die Funktion aus der gespeicherten Datei aufzurufen, musst du ein Projekt in dem von dir gewünschten Verzeichnis anlegen. Dazu arbeitest du im Terminal (nicht in der REPL) und rufst den Befehl zur Initialisierung eines Elm-Projektes auf.
% elm init
Wie wechsle ich im Terminal ein Verzeichnis?
Wenn du das Terminal startest, befindest du dich in einem Verzeichnis auf
der Festplatte. Der Befehl elm init
würde dann an dieser Stelle
das Projekt erzeugen.
Um dein Projekt gezielt an einer Stelle auf deiner Festplatte zu erzeugen,
musst du zuerst das Verzeichnis wechseln.
Dies funktioniert mit dem cd
-Befehl (change directory).
Die wichtigsten Arten für Aufrufe lauten:
-
cd ..
- wechsle ein Verzeichnis nach oben -
cd D:
- wechsle auf das Laufwerk D: (unter Windows) -
cd meinProjekt
- wechsel in das Unterverzeichnis meinProjekt -
cd
- zeige das aktuelle Verzeichnis an. (Unter Linux / OS X: pwd für print working directory)
Es wurden eine Datei mit dem Namen elm.json und ein Verzeichnis mit dem Namen src angelegt. Die Datei elm.json enthält einige Einstellungen z.B. zur verwendeten Elm-Version, das Verzeichnis src ist leer und für Elm-Quellcode vorgesehen.
Erstelle im src-Verzeichnis eine Datei Pyramide.elm mit folgendem Inhalt:
module Pyramide exposing (..)
gewichtQuader laenge breite hoehe =
laenge * breite * hoehe * 2.7
Zusätzlich zur schon bekannten Funktion enthält die Datei eine Zeile mit folgenden Elementen:
-
module
- Besagt, dass die Datei ein Modul, also eine Sammlung von Funktionen, enthält. -
Pyramide
- Name des Moduls. Dieser muss groß geschrieben werden und dem Namen der Datei entsprechen. -
exposing (..)
- Legt fest, dass alle Funktionen des Moduls außerhalb der Datei zur Verfügung stehen sollen.
Tipps zu Visual Studio Code
Falls du Visual Studio Code nutzt, empfielt sich folgende Vorgehensweise:
- Erstelle ein Verzeichnis im Dateimanager. Unter Windows ist das üblicherweise der Explorer.
- Starte VS Code und öffne über das Menü (Datei→Ordner öffnen) das erstellte Verzeichnis. (Je nach Einstellungen deines Computers kannst du evtl. auch im Dateimanager durch Rechtsklick auf das Verzeichnis VS Code öffnen, so dass automatisch das Verzeichnis in VS Code geöffnet wird.)
- Öffne das Terminal in VS Code. Da du vorher das Verzeichnis geöffnet hast, befindest du dich im Terminal direkt im richtigen Verzeichnis.
- Rufe
elm init
auf, um ein Elm-Projekt zu erzeugen. - Erstelle im src-Ordner die Elm-Datei, indem du auf das src-Verzeichnis mit der rechten Maustaste klickst und den Eintrag "Neue Datei" wählst.
Aufgabe 2
Erstelle selbst ein Elm-Projekt und füge die Datei Pyramide.elm hinzu.
Ein Modul in der REPL nutzen
Du kannst die Funktionen deines Moduls in der REPL benutzen, wenn du dein Modul importierst:
> import Pyramide exposing (..)
> gewichtQuader 100 50 80
1080000 : Float
Dir stehen alle Funktionen und eventuell definierte Konstanten deines Moduls zur Verfügung. Wenn du Änderungen durchführst, kannst du die geänderten Funktionen aufrufen, ohne dass du das Modul neu importieren müsstest. Die REPL bemerkt, wenn sich die Datei des Moduls ändert.
Aufgabe 3
- Starte die REPL innerhalb deines Projekt-Verzeichnisses.
- Importiere das Modul.
- Rufe die Funktion
gewichtQuader
auf. - Verändere die Implementierung, z.B. indem du die Konstante auf den Wert 2.8 änderst und speichere die Datei.
- Rufe die Funktion erneut in der REPL auf.