В следующей ситуации
trait T {
@tailrec
def consume[A](as: Stream[A]): Unit = {
if (as.isEmpty) ()
else consume(as.tail)
}
}
object O extends T
вызывая O.consume(Range(1, N).toStream)
с N
достаточно большим, у программы закончится нехватка памяти или, по крайней мере, будет потреблять O (N) вместо необходимого O (1).