Rozumiem, że telefoniczne połączenie jest po prostu zapamiętywaną wersją połączenia głosowego. W Kursie FP Johna Odersky'ego na Courserze, w wykładzie 7.3 (Lazy Evaluation), wspomina on, że jeśli strumienie zostały zaimplementowane przy użyciu nazwy wywoławczej, może to potencjalnie doprowadzić do wybuchu złożoności obliczeniowej.Scala Stream call-by-need (leniwy) kontra call-by-name
Jaki byłby przykład takiego wybuchu?
Call-by-name:
def cons[T](hd: T, tl: => Stream[T]) = new Stream[T] {
def head = hd
def tail = tl
...
}
Call-by-potrzebował:
def cons[T](hd: T, tl: => Stream[T]) = new Stream[T] {
def head = hd
lazy val tail = tl
...
}
proszę sprawdzić link – sailor
@sailor - Dzięki , poprawione –