Erstellung
Zugriff
Man kann mitlist[index] auf ein Element zugreifen.
Head und Tail
List.head gibt das erste Element einer Liste zurück.
List.tail gibt die Liste ohne das erste Element zurück.
Cons Operator ::
Der Cons Operator :: fügt ein Element vorne an eine Liste an.
Wichtig: Das Element links muss den gleichen Typ haben wie die Elemente der Liste.
Der Cons Operator wird auch oft in Pattern Matching verwendet:
Append Operator @
Der Append Operator @ verbindet zwei Listen.
List Comprehensions
List Comprehensions sind eine kompakte Möglichkeit, Listen zu erzeugen.Mit Bedingung
Mehrere yield
Man kann pro Durchlauf mehrere Werte erzeugen.
yield!
yield! fügt eine ganze Liste in die neue Liste ein.
Listenfunktionen
List.map
List.map verändert jedes Element einer Liste nach einer Regel.
List.filter
List.filter behält nur Elemente, die eine Bedingung erfüllen.
List.length
List.length gibt die Anzahl Elemente zurück.
List.sum
List.sum addiert alle Elemente einer numerischen Liste.
List.sumBy
List.sumBy berechnet zuerst pro Element einen Wert und summiert diese Werte danach.
List.min und List.max
Gibt das kleinste bzw. das grösste Element zurück.
List.minBy und List.maxBy
List.minBy gibt das Element zurück, bei dem ein berechneter Wert am kleinsten ist.
List.maxBy gibt das Element zurück, bei dem ein berechneter Wert am grössten ist.
List.rev
List.rev dreht die Reihenfolge einer Liste um. Die ursprüngliche Liste wird nicht verändert.
List.sort
List.sort sortiert eine Liste aufsteigend.
List.sortBy
List.sortBy sortiert nach einem berechneten Wert.
List.sortDescending
List.sortDescending sortiert eines Liste absteigend.
List.sortDescendingBy
List.zip
List.zip verbindet zwei Listen elementweise zu Tupeln.
List.forAll
List.forall prüft, ob alle Elemente eine Bedingung erfüllen.
List.exists
List.exists prüft, ob mindestens ein Element eine Bedingung erfüllt.
List.reduce
List.reduce fasst eine Liste zu einem einzelnen Wert zusammen.
List.fold
List.fold ist ähnlich wie reduce, aber man gibt einen Startwert mit.
Unterschied zwischen reduce und fold
Startwert
Startwert
List.reduce nimmt das erste Listenelement als Startwert, während List.fold einen eigenen Startwert bekommt.fold auch mit leeren Listen im Gegensatz zu reduce, wo ein Fehler geworfen wird.Datentyp des Resultats
Datentyp des Resultats
Nur
fold kann z.B. aus einer int list einen string machen.List.foldBack
List.foldBack läuft von rechts nach links durch die Liste.
Kombination mehrerer Funktionen
In F# kombiniert man Listenfunktionen oft mit der Pipe|>.
xs = [2; 3]
{ Name = "Anna"; Grade = 5.5 }{ Name = "Ben"; Grade = 4.0 }]
{ Name = "Carla"; Grade = 3.5 }{ Name = "Ben"; Grade = 4.0 }{ Name = "Anna"; Grade = 5.5 }]