Verarbeitung von Tupeln
Mustererkennung verwenden
Die Mustererkennung erfolgt bei Tupeln völlig analog zu Records.
type alias Datum = (Int, Int, Int)
type alias Zeit = (Int, Int)
type alias Metadaten =
{ datum: Datum
, uhrzeit: Zeit
}
<p>metadatenFoto1: Metadaten<br />
metadatenFoto1 = { datum = (9, 8, 2022), uhrzeit = (15, 35) }</p>
<p>textAusgabe: Metadaten -> String<br />
textAusgabe datensatz =<br />
let<br />
{ datum, uhrzeit } = datensatz<br />
( tag, monat, jahr ) = datum<br />
in<br />
"Das Foto wurde am "<br />
++ (String.fromInt tag) ++ "."<br />
++ (String.fromInt monat) ++ "."<br />
++ (String.fromInt jahr) ++ " gemacht."<br />
> textAusgabe metadatenFoto1
"Das Foto wurde am 9.8.2022 gemacht." : String
Aufgabe 1
(a) Analysiere und erkläre die Definition der Funktion textAusgabe.
(b) Ergänze die Ausgabe der Uhrzeit.
(c) Ergänze die Ausgabe der Position.
Zugriffsfunktionen verwenden
Für Tupel gibt es auch vordefinierte Zugriffsfunktionen - jedoch nur für Tupel mit zwei Elementen. Das schränkt die Möglichkeiten für einen Zugriff mit Zugriffsfunktionen stark ein. Es ist daher in der Regel günstiger mit Mustererkennung zu arbeiten.
> metadatenFoto1.uhrzeit
...
> Tuple.first metadatenFoto1.uhrzeit
...
> Tuple.second metadatenFoto1.uhrzeit
...
> metadatenFoto1.datum
...
> Tuple.first metadatenFoto1.datum
...
Aufgabe 2
(a) Analysiere und erkläre die Experimente in der REPL.
(b) Deute auch die Fehlermeldung.