Angesichts einer Sequenz von Gruppen-ID / Wert-Tupeln war es einfach, Gruppensummen zu berechnen (ziemlich genau so, wie ich es mit C # und LINQ machen würde):
%Vor%Aber da ich neu bei F # bin, kann ich keinen Weg sehen, das mit Listen so zu machen. Muss ich veränderbare Variablen verwenden, oder gibt es eine funktionale Möglichkeit, dasselbe mit Listen zu tun?
Es gibt kein eingebautes List.groupBy
. Eine Anzahl von F # eingebauten Typen haben Funktionen, denen die Seq-Version dieser Funktion zugewiesen ist. z.B. von list.fs
let inline sumBy f (list : list<_>) = Seq.sumBy f list
Ich bin mir ziemlich sicher, dass die Entwickler von F # viele Diskussionen darüber geführt haben, was man aus Gründen der Konsistenz kopieren soll und was man aus DRY herauslassen sollte. Ich persönlich wünsche, dass sie bei DRY bleiben.
Wenn Sie Ihre eigene "funktionale" List.groupBy erstellen möchten, würde ich map und list verwenden.
%Vor%Sie können Listen überspringen, wenn Sie nur die Summe benötigen.
%Vor%Ausgabe
%Vor%Tags und Links f#