i

Verarbeitung von Tupel

Mustererkennung verwenden

Die Mustererkennung erfolgt bei Tupel völlig analog zu Records.

Aufgabe 1

(a) Analysiere und erkläre die Definition der Funktion textAusgabe.

(b) Ergänze den Text um die Ausgabe der Uhrzeit.

module Metadaten exposing (..)

type alias Datum = (Int, Int, Int)
type alias Zeit = (Int, Int)
type alias Position = (Int, Int, Int)
type alias Metadaten =
    { 
        datum: Datum, 
        uhrzeit: Zeit, 
        breitengrad: Position,
        laengengrad: Position
    }

metadatenFoto1: Metadaten
metadatenFoto1 = { datum = (9, 8, 2022), uhrzeit = (15, 35), breitengrad = (50, 56, 28), laengengrad = (6, 57, 21) }

textAusgabe: Metadaten -> String
textAusgabe datensatz =
    let
        { datum, uhrzeit } = datensatz
        ( tag, monat, jahr ) = datum
        ( stunde, minute ) = uhrzeit
    in
    "Das Foto wurde am " ++ (String.fromInt tag) ++ "." ++ (String.fromInt monat) ++ "." ++ (String.fromInt jahr) ++ " gemacht."
> import Metadaten exposing (..)
> textAusgabe metadatenFoto1
"Das Foto wurde am 9.8.2022 gemacht." : String

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.

Aufgabe 2

(a) Analysiere und erkläre die Experimente in der REPL.

(b) Deute auch die Fehlermeldung.

module Metadaten exposing (..)

type alias Datum = (Int, Int, Int)
type alias Zeit = (Int, Int)
type alias Position = (Int, Int, Int)
type alias Metadaten =
    { 
        datum: Datum, 
        uhrzeit: Zeit, 
        breitengrad: Position,
        laengengrad: Position
    }

metadatenFoto1: Metadaten
metadatenFoto1 = { datum = (9, 8, 2022), uhrzeit = (15, 35), breitengrad = (50, 56, 28), laengengrad = (6, 57, 21) }
> metadatenFoto1.uhrzeit
(15,35) : Zeit
> Tuple.first metadatenFoto1.uhrzeit
15 : Int
> Tuple.second metadatenFoto1.uhrzeit
35 : Int
> metadatenFoto1.datum
(9,8,2022) : Datum
> Tuple.first metadatenFoto1.datum
-- TYPE MISMATCH ---------------------------------------------------------- REPL

The 1st argument to `first` is not what I expect:

4|   Tuple.first metadatenFoto1.datum
                 ^^^^^^^^^^^^^^^^^^^^
The value at .datum is a:

    Datum

But `first` needs the 1st argument to be:

    ( a, b )

Suche

v
110.2.8.2.1.2
inf-schule.de/fp_elm_alteversion/elm_programme/datensaetze/tupel/lernstrecke/verarbeitungzugriff
inf-schule.de/110.2.8.2.1.2
inf-schule.de/@/page/7p0dZWZFhJQLQlMf

Rückmeldung geben