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
}
metadatenFoto1: Metadaten
metadatenFoto1 = { datum = (9, 8, 2022), uhrzeit = (15, 35) }
textAusgabe: Metadaten -> String
textAusgabe datensatz =
let
{ datum, uhrzeit } = datensatz
( tag, monat, jahr ) = datum
in
"Das Foto wurde am "
++ (String.fromInt tag) ++ "."
++ (String.fromInt monat) ++ "."
++ (String.fromInt jahr) ++ " gemacht."
> 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.