Iteratees w Scali, które używają leniwej oceny lub fuzji?
Słyszałem, że iteracje są leniwe, ale jak leniwedokładnie czy oni są? Alternatywnie, czy iteracje można połączyć z funkcją postprocessingu, aby nie trzeba było budować pośredniej struktury danych?
Czy na przykład w moim iteracie mogę zbudować milion egzemplarzyStream[Option[String]]
odjava.io.BufferedReader
, a następnie odfiltrujNone
s, w sposób kompozycyjny, bez konieczności trzymania całego strumienia w pamięci? A jednocześnie gwarantuję, że nie wysadzę stosu? Albo coś w tym stylu - nie musi używaćStream
.
Obecnie używam Scalaz 6, ale jeśli inne implementacje iteracyjne są w stanie zrobić to w lepszy sposób, chciałbym wiedzieć.
Proszę podać kompletne rozwiązanie, łącznie z zamknięciemBufferedReader
i wołanieunsafePerformIO
, jeśli dotyczy.