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.BufferedReaderund dann das herausfilternNones 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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage