5
私は、コールバイニーズは単純に呼び名のメモ付きバージョンであることを理解しています。講義7.3(遅延評価)のCourseraのMartin OderskyのFPコースでは、Streamsがコール・バイ・ネームを使用して実装されていれば、計算上の複雑さが爆発する可能性があると述べています。スカラストリームcall-by-need(怠惰な)vs名前による呼出し
このような爆発の例は何でしょうか?
コールバイ名:
def cons[T](hd: T, tl: => Stream[T]) = new Stream[T] {
def head = hd
def tail = tl
...
}
コールバイ必要:
def cons[T](hd: T, tl: => Stream[T]) = new Stream[T] {
def head = hd
lazy val tail = tl
...
}
からコピーされ、 – sailor
@sailor:メモ化がなければ、それはシーケンスの長さの直線的な減速(およびスタックの成長を)持っています、修正済み –