Итераторы в Scala, которые используют ленивую оценку или слияние?
Я слышал, что повторяющиеся ленивы, но как ленивыименно так они? Или же можно объединить итераторов с функцией постобработки, чтобы не нужно было создавать промежуточную структуру данных?
Могу ли я, например, в моей итерации собрать 1 миллион предметовStream[Option[String]]
изjava.io.BufferedReader
, а затем впоследствии отфильтроватьNone
s композиционным способом, не требуя, чтобы весь поток был сохранен в памяти? И в то же время гарантировать, что я не взорву стек? Или что-то в этом роде - он не должен использоватьStream
.
В настоящее время я использую Scalaz 6, но если другие реализации Iteratee смогут сделать это лучше, мне было бы интересно узнать.
Пожалуйста, предоставьте полное решение, включая закрытиеBufferedReader
и звонитunsafePerformIO
, если это применимо.