Das hört sich vielleicht so an, als würde ich einen Flammenkrieg beginnen, aber hör mir zu.Sollte ich Enum in Elixir bevorzugen?
In einigen Sprachen ist Faulheit teuer. Zum Beispiel in Ruby, wo ich die jüngsten Erfahrungen haben, ist Faulheit langsam, weil es Fasern erreicht ist verwenden, so ist es nur dann attraktiv, wenn:
- Sie cpu für Speicher abwägen muss (man denke durch große Datenmenge Paging)
- die Leistungseinbuße ist es wert Details zu verstecken (zu Faser nachgiebig ist eine gute Möglichkeit, die Komplexität zu abstrahieren, anstatt nach unten Blöcken vorbei in geheimnisvollen Orten zu laufen)
Ansonsten werden Sie auf jeden Fall die verwendet werden sollen normale, eifrige Methoden.
Meine erste Untersuchung legt nahe, dass der Overhead für Faulheit in Elixir viel niedriger ist (this thread auf reddit unterstützt mich), so scheint es keinen Grund zu geben Enum anstelle von Stream für die Dinge, die Stream tun können.
Gibt es etwas, das ich vermisse, da ich annehme, Enum existiert aus einem Grund und implementiert einige der gleichen Funktionen wie Stream. In welchen Fällen würde ich Enum anstelle von Stream verwenden wollen, wenn ich Stream verwenden könnte?
Ich denke, Sie meinen "sehr komplexe Kartenfunktionen" – greggreg
Nein, ich meine reduzieren. Karte ist ein Spezialfall von reduzieren. Siehe https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/stream/reducers.ex –
ah ja, guten Ruf! – greggreg