En la siguiente situaciónScala función de procesador del Flujo recursiva de cola definido en rasgo sostiene referencia a la corriente de cabeza
trait T {
@tailrec
def consume[A](as: Stream[A]): Unit = {
if (as.isEmpty)()
else consume(as.tail)
}
}
object O extends T
llamando O.consume(Range(1, N).toStream)
con N
lo suficientemente grande, el programa se ejecutará sin memoria, o al menos consumirá O (N) en lugar de O (1) necesario.
Ver también http://stackoverflow.com/questions/12529697/how-to-write-non-leaking-tail-recursive-stream-function-in-scala – ron