i

Fachkonzept - Liste

Eine Liste bilden

Mit einer Liste kann man Daten einer Datensammlung verwalten. Die Daten einer Liste werden dann Listenelemente genannt. Sie sind der Reihe nach angeordnet. Eine Liste kann dynamisch verändert werden, d.h. man kann neue Listenelemente hinzufügen und man kann auch Listenelemente entfernen. Alle in der Liste vorkommenden Daten müssen in Elm denselben Datentyp haben.

Die Abbildung verdeutlicht den Aufbau einer Liste.

Liste

Hier ein REPL-Dialog, in dem verschiedene Listen erzeugt werden.

> notenliste = [1,3,2,4,1,2,5,3]
[1,3,2,4,1,2,5,3]
    : List number
> namensliste = ["Eva","Otto","Kim","Reza"]
["Eva","Otto","Kim","Reza"] : List String
> personenliste = [{name="Bond",vorname="James"},{name="Hari",vorname="Mata"}]
[{ name = "Bond", vorname = "James" },{ name = "Hari", vorname = "Mata" }]
    : List { name : String, vorname : String }
> leereListe = []
[] : List a

Beachte, dass man mit [] auch eine leere Liste bilden kann.

Grundlegende Listenfunktionen

Es gibt zahlreiche vordefinierte Listenfunktionen (siehe Elm - List). Wir beschreiben hier nur zwei besonders wichtige Funktionen.

Mit der cons-Funktion :: kann man neue Daten in eine Liste aufnehmen.

> 1::[2,3,4]
[1,2,3,4] : List number
> 'a'::['b','c']
['a','b','c'] : List Char

Mit der append-Funktion ++ (bzw. List.append) kann man zwei Listen zu einer zusammenfügen.

> [1] ++ [2,3]
[1,2,3] : List number
> [1,2] ++ [3,4]
[1,2,3,4] : List number
> ["ene","mene","miste"] ++ ["es","rappelt","in","der","Kiste"]
["ene","mene","miste","es","rappelt","in","der","Kiste"]
    : List String
> List.append ['K','a'] ['t','z','e']
['K','a','t','z','e'] : List Char

Beachte, dass die beiden Funktionen :: und ++ jeweils neue Listen erzeugen.

> liste = [1,2,3]
[1,2,3] : List number
> 0::liste
[0,1,2,3] : List number
> liste
[1,2,3] : List number
> liste ++ [4,5]
[1,2,3,4,5] : List number
> liste
[1,2,3] : List number

Mustererkennung verwenden

Bei der Verarbeitung von Listen ist es meist sinnvoll, die Listen mit Hilfe von Mustern zu dekonstruieren.

module Listendemo exposing (..)

notenliste: List Int
notenliste = [14, 7, 12, 10, 4, 8, 13]

verarbeitung: List Int -> List Int
verarbeitung liste =
    case liste of
        [] -> 
		    []
        erstesElement :: restListe ->
            [erstesElement+1] ++ verarbeitung restListe
> import Listendemo exposing (..)
> verarbeitung [1,3,2,4,1,2,5,3]
[2,4,3,5,2,3,6,4]
    : List Int

Hier werden die beiden Fälle "leere Liste" (mit dem Muster []) und "Liste hat mindestens ein Element" (mit dem Muster erstesElement :: restListe) betrachtet und mit geeigneten Ausdrücken (hier rekursiv) verarbeitet.

Suche

v
8.2.2.9.4
inf-schule.de/deklarativ/fp_elm/elm_programme/listen/konzept_liste
inf-schule.de/8.2.2.9.4
inf-schule.de/@/page/tKtb1qHB1XnGWrhP

Rückmeldung geben