Iterados em Scala que usam avaliação preguiçosa ou fusão?

Ouvi dizer que os iteratos são preguiçosos, mas que preguiçososexatamente são eles? Alternativamente, as iterações podem ser fundidas com uma função de pós-processamento, de modo que uma estrutura de dados intermediária não precise ser construída?

Posso na minha iteração, por exemplo, construir um item de 1 milhãoStream[Option[String]] a partir de umjava.io.BufferedReadere, em seguida, filtrarNones, de uma forma composicional, sem exigir que todo o fluxo seja mantido na memória? E, ao mesmo tempo, garanto que não estoure a pilha? Ou algo assim - não tem que usar umStream.

Atualmente estou usando Scalaz 6, mas se outras implementações iteratee são capazes de fazer isso de uma maneira melhor, eu estaria interessado em saber.

Por favor, forneça uma solução completa, incluindo o fechamento doBufferedReader e chamandounsafePerformIO, se aplicável.

questionAnswers(2)

yourAnswerToTheQuestion