P
Size: a a a
P
P
DS
λ
P
DS
P
DS
DS
P
P
P
DS
def compute() = { print("BOOM"); 123 }
val fa = Future(compute())
val fb = Future(compute())
for(a <- fa; b <- fb) yield a + b
// Хочу отрефакторить
val myCompute = Future(compute())
for(a <- myCompute; b <- myCompute) yield a + b
// получаю не то поведение, что было до этого
// теперь с ленивыми футурами:
// До
IO.parallel(LazyFuture(compute(), LazyFuture(compute())).map((a, b) => a + b)
// после рефакторинга
val myComputeLazy = LazyFuture(compute())
IO.parallel(myComputeLazy, myComputeLazy).map((a,b) => a + b)
// поведение будет сохраненно в результате рефакторингаDS
DS
P
def compute() = { print("BOOM"); 123 }
val fa = Future(compute())
val fb = Future(compute())
for(a <- fa; b <- fb) yield a + b
// Хочу отрефакторить
val myCompute = Future(compute())
for(a <- myCompute; b <- myCompute) yield a + b
// получаю не то поведение, что было до этого
// теперь с ленивыми футурами:
// До
IO.parallel(LazyFuture(compute(), LazyFuture(compute())).map((a, b) => a + b)
// после рефакторинга
val myComputeLazy = LazyFuture(compute())
IO.parallel(myComputeLazy, myComputeLazy).map((a,b) => a + b)
// поведение будет сохраненно в результате рефакторингаAZ

P
DS
P