i

Vertiefung - Module und Elm-Projekte

Programmieren in der REPL

Wir gehen von folgender Implementierung der Funktion kostenWandtattoos aus:

kostenWandtattoos : Int -> Float
kostenWandtattoos anzahl =
    toFloat anzahl * 12.99

Aufgabe 1

  • Gib die Funktionsdefinition in die REPL ein und rufe sie mit Beispielwerten auf.
  • Verändere die Konstante dann z.B. auf den Wert 15.99 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 diese dann nutzen zu können, musst du ein Projekt in dem von dir gewünschten Verzeichnis anlegen. Dazu arbeitest du im Terminal (nicht in der REPL) in dem Verzeichnis, in dem du das Projekt erstellen möchtest, 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. src ist eine geläufige Abkürzung für source/Quelle.

Erstelle im src-Verzeichnis eine Datei Wandtattoo.elm mit folgendem Inhalt:

module Wandtattoo exposing (..)


kostenWandtattoos : Int -> Float
kostenWandtattoos anzahl =
    toFloat anzahl * 12.99

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.
  • Wandtattoo - 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 Wandtattoo.elm hinzu.

Ein Modul in der REPL nutzen

Du kannst die Funktionen deines Moduls in der REPL benutzen, wenn du dein Modul importierst:

> import Wandtattoo exposing (..)
> kostenWandtattoos 18
233.82 : 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 musst. 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 kostenWandtattoos auf.
  • Verändere die Implementierung, z.B. indem du die Konstante auf den Wert 15.99 änderst und speichere die Datei.
  • Rufe die Funktion erneut in der REPL auf.

Suche

v
8.2.2.2.2
www.inf-schule.de/deklarativ/fp_elm/elm_programme/funktionen/module
www.inf-schule.de/8.2.2.2.2
www.inf-schule.de/@/page/TxVVMSKHQD7YQxXx

Rückmeldung geben