i

Definition eines neuen Datentyps

Eine Typdeklaration verwenden

Der einfachste Weg aus der im letzten Abschnitt beschriebenen Problematik besteht darin, selbst einen neuen Datentyp für den Status einzuführen.

Die folgenden Abschnitte passen noch nicht zum Beispiel bzw. sind noch nicht fertig...

Typdefinition ohne Benutzername

type LoginStatus
    = Abgemeldet
    | Angemeldet

In der REPL lässt dies direkt verwenden:

> Abgemeldet
Abgemeldet : LoginStatus
> Angemeldet
Angemeldet : LoginStatus

Aufgabe

Erkläre die Ausgabe in der REPL.

Typdefinition mit Benutzername

type LoginStatus
    = Abgemeldet
    | Angemeldet String
module Interpreter exposing (..)

type Befehl 
    = LI                    -- links
    | RE                    -- rechts
    | VW Int                -- vorwärts ...
> import Interpreter exposing (..)

> LI
LI : Befehl
> VW 2
VW 2 : Befehl
> [VW 2, RE, VW 4, LI, VW 2]
[VW 2,RE,VW 4,LI,VW 2]
    : List Befehl

Mit type Befehl wird der neue Datentyp Befehl definiert.

Die Datenwerte des neuen Datentyps Befehl werden in der Typdeklaration genau angegeben. Es sind die Datenwerte LI und RE für die Drehungen sowie VW ... (wobei hier für die drei Punkte eine Int-Zahl eingesetzt werden muss) für die Vorwärtsbewegung.

Mit diesen Datenwerten vom Typ Befehl kann man jetzt eine Liste mit Daten des Typs Befehl erstellen. Die Welt ist damit für Elm wieder in Ordnung.

Aufgabe 1

Teste die oben gezeigte Typdeklaration mit einer selbst vorgegebenen Befehlsliste.

Aufgabe 2

Der folgende Quelltext enthält weitere Typdeklarationen. Analysiere den Quelltext und erläutere alle Detail. Teste selbst.

module Interpreter exposing (..)

type Befehl 
    = LI                    -- links
    | RE                    -- rechts
    | VW Int                -- vorwärts ...

type alias Programm = List Befehl

programm1: Programm
programm1 = [VW 2, RE, VW 4, LI, VW 2]

type Richtung
    = N     -- Norden
    | O     -- Osten
    | S     -- Süden
    | W     -- Westen

type alias Akteur = (Int, Int, Richtung) 

akteur: Akteur
akteur = (0,0,N)
> import Interpreter exposing (..)
> akteur
(0,0,N) : Akteur
> programm1
[VW 2,RE,VW 4,LI,VW 2]
    : Programm

Suche

v
110.2.13.1.1.1
inf-schule.de/fp_elm_alteversion/elm_programme/typdefinition/begruessung/lernstrecke/typdeklaration
inf-schule.de/110.2.13.1.1.1
inf-schule.de/@/page/CUTMuThwKHnIZqIF

Rückmeldung geben