Iterierte in Scala, die eine verzögerte Auswertung oder Fusion verwenden?
Ich habe gehört, dass Iteratees faul sind, aber wie faulgenau sind sie? Können Iteratees alternativ mit einer Nachbearbeitungsfunktion verschmolzen werden, so dass keine Zwischendatenstruktur aufgebaut werden muss?
Kann ich in meinem Iterationsschritt zum Beispiel einen 1-Millionen-Gegenstand bauen?Stream[Option[String]]
von einemjava.io.BufferedReader
und dann das herausfilternNone
s kompositorisch, ohne dass der gesamte Stream gespeichert werden muss? Und gleichzeitig garantieren, dass ich den Stapel nicht blase? Oder so ähnlich - es muss keinStream
.
Ich verwende derzeit Scalaz 6, aber wenn andere Iteratee-Implementierungen dies besser können, würde mich das interessieren.
Bitte geben Sie eine vollständige Lösung an, einschließlich des Schließens desBufferedReader
und anrufenunsafePerformIO
, wenn anwendbar.