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