Kurze Antwort - die Bibliotheksdesigner glaubten nicht, dass dies eine Inklusion gewährleiste.
Beim Entwerfen einer Bibliothek jeder Art, insbesondere aber einer Kernbibliothek wie Auflistungsmodulen in F #, geht es immer darum, das richtige Gleichgewicht zwischen Komplexität und Nützlichkeit zu finden. Sie müssen sorgfältig abwägen, ob Ihr neues Feature genügend Speicherplatz bietet, um die Kosten für eine größere Bibliothek auszugleichen. Zum Entfernen aller Instanzen eines Elements können Sie List.filter
mit einem negierten Prädikat verwenden. Die Designer könnten eine List.remove
Funktion enthalten, die die Negation intern durchführt. Es ist nicht etwas Undenkbares, in der Tat neigen Lisps dazu, sowohl filter
als auch remove
zu haben. In Haskell und OCaml haben Sie allerdings nur filter
- und wahrscheinlich sind F # -Designer hier gefolgt.
Wenn Sie nur eine einzelne Instanz eines Elements entfernen möchten, müssen Sie selbst etwas schreiben. Dies ist ein nicht standardmäßiger Anwendungsfall für eine Liste - Listen sind "über" akkumulierende Elemente in Folge; Das Entfernen bestimmter Elemente aus der Mitte der Liste (im Gegensatz zum Entfernen des Kopfes oder Entfernen aller unerwünschten Elemente) ist selten nützlich. Wenn Sie Elemente hinzufügen oder entfernen möchten, ohne die Reihenfolge beizubehalten, sind Sätze oder Karten (die als Multisets verwendet werden) besser für den Job geeignet.
Soweit ich verstehe, verwendet funktionale Sprachen unveränderliche (schreibgeschützte) Daten. Stattdessen sollten Sie stattdessen eine neue Liste erstellen und unerwünschte Elemente filtern. –
'List.filter' mit einer Negation? –
@MarkShevchenko Das habe ich mit Pattern Matching umgesetzt. Ich erwarte nur, dass dies in den Rahmen aufgenommen wird. –