i

Mustererkennung

Cons-Operator

Vor einiger Zeit hast du die beiden Listen-Operatoren ++ und :: kennengelernt. Der Operator ++ fügt zwei Listen zusammen, während der Operator :: ein Element an den Anfang einer Liste hängt.

> [1, 2, 3] ++ [4, 5, 6]
[1, 2, 3, 4, 5, 6] : List number
> 1 :: [2, 3, 4]
[1, 2, 3, 4] : List number

Vermutlich hast du den ::-Operator nicht so oft verwendet. Er wird auch Cons-Operator genannt, weil man mit ihm eine Liste erzeugen, also konstruieren kann.

> 1 :: 2 :: 3 :: []
[1, 2, 3] : List number

Man kann den Cons-Operator allerdings auch verwenden, um eine Liste bei der Mustererkennung in einem case-Ausdruck zu zerlegen:

listenanalyse : List a -> String
listenanalyse liste =
    case liste of
        [] ->
            "Liste ist leer"

        anfang :: rest ->
            "Liste enthält mindestens ein Element und (möglicherweise leere) rest-Liste"

Beachte die Typvariable a in der Signatur von listenanalyse, da wir keine Aussage über die Elemente der Liste machen wollen.

Aufgabe 1

Teste die Funktion listenanalyse mit verschiedenen Listen in der REPL.

Aufgabe 2

Verändere die Funktion listenanalyse so, dass sie sich folgendermaßen verhält:

        > listenanalyse []
"Liste ist leer" : String
> listenanalyse ["Hallo"]
"Hallo und 0 weitere Elemente" : String
> listenanalyse ["Hallo", "wie", "geht es?"]
"Hallo und 2 weitere Elemente" : String

Suche

v
8.2.2.10.3.1.2
dev.inf-schule.de/deklarativ/fp_elm/elm_programme/rekursion/verschluesselung/lernstrecke/pattern_matching
dev.inf-schule.de/8.2.2.10.3.1.2
dev.inf-schule.de/@/page/afh6L20FAlcOqXUH

Rückmeldung geben