Verwendung von Aliasnamen
Eine komplizierte Typangabe vereinfachen
Wir betrachten noch einmal die Darstellung eines Datensatzes als Record.
module Mailadressen exposing (..)
person1 =
{
vorname = "Anuk",
nachname = "Franck",
geburtsdatum =
{
tag = 6,
monat = 6,
jahr = 2006
}
}
> import Mailadressen exposing (..)
> person1
{ geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: { geburtsdatum : { jahr : number, monat : number1, tag : number2 }
, nachname : String
, vorname : String
}
Bei der Auswertung von person1
wird folgende Typangabe von Elm erzeugt:
{ geburtsdatum : { jahr : number, monat : number1, tag : number2 }, nachname : String, vorname : String}
Elm hat die Struktur des Records somit genau erfasst. Die Typangabe ist hier recht lang und daher für Menschen nicht so gut lesbar. Elm stellt - wie andere Programmiersprachen auch - für solche Situationen eine Möglichkeit bereit, abkürzende Alsiasnamen zu verwenden.
Aliasnamen kennst Du sicher aus der Musikszene: Cherilyn Sarkisian La Piere alias Cher oder Paul David Hewson alias Bono haben Aliasnamen gewählt - vermutlich um besser wiedererkannt zu werden und sich damit besser vermarkten zu können.
Wir verwenden Aliasnamen hier, um komplizierte Typangaben leichter verwenden zu können.
module Mailadressen exposing (..)
type alias Person =
{
vorname: String,
nachname: String,
geburtsdatum:
{
tag: Int,
monat: Int,
jahr: Int
}
}
person1: Person
person1 =
{
vorname = "Anuk",
nachname = "Franck",
geburtsdatum =
{
tag = 6,
monat = 6,
jahr = 2006
}
}
> import Mailadressen exposing (..)
> person1
{ geburtsdatum = { jahr = 2006, monat = 6, tag = 6 }, nachname = "Franck", vorname = "Anuk" }
: Person
Aufgabe 1
(a) Vergleiche die beiden Implementierungen zum betrachteten Datensatz.
(b) Teste auch die Version mit Aliasnamen.
Aufgabe 2
Ergänze den Record für person1
um die folgende Adresse. Ergänze hierzu auch die Festlegung des Typ-Aliasnamen.
Adresse: Moselweg 44 54321 Konz