TG Telegram Group & Channel
Scala bin | United States America (US)
Create: Update:

Правильный ответ на пятничный вопрос - start start start i0 i1 i2. Сам результат при этом не так интересен, как приводящая к нему логика исполнения программы. Чтобы её увидеть, можно добавить в код дополнительные отладочные выражения. Обратите внимание, что написать println("end") в конце нельзя, так как тип результата блока reset согласован с типом функции f.

val x = reset {
def iterate(n: Int) = shift { f: (Int => Int) =>
println(s"start $n")
val x = f(0)
println(s"got back to $n - got res $x")
println(s"ran $x")
x + 1
}
println("pre-start 0")
iterate(0)
println("pre-start 1")
iterate(1)
println("pre-start 2")
val res = iterate(2)
println("end")
res
}
println(x)

Cоответствующий вывод в консоль:

pre-start 0
start 0
pre-start 1
start 1
pre-start 2
start 2
end
got back to 2 - got res 0
ran 0
got back to 1 - got res 1
ran 1
got back to 0 - got res 2
ran 2
3

Правильный ответ на пятничный вопрос - start start start i0 i1 i2. Сам результат при этом не так интересен, как приводящая к нему логика исполнения программы. Чтобы её увидеть, можно добавить в код дополнительные отладочные выражения. Обратите внимание, что написать println("end") в конце нельзя, так как тип результата блока reset согласован с типом функции f.

val x = reset {
def iterate(n: Int) = shift { f: (Int => Int) =>
println(s"start $n")
val x = f(0)
println(s"got back to $n - got res $x")
println(s"ran $x")
x + 1
}
println("pre-start 0")
iterate(0)
println("pre-start 1")
iterate(1)
println("pre-start 2")
val res = iterate(2)
println("end")
res
}
println(x)

Cоответствующий вывод в консоль:

pre-start 0
start 0
pre-start 1
start 1
pre-start 2
start 2
end
got back to 2 - got res 0
ran 0
got back to 1 - got res 1
ran 1
got back to 0 - got res 2
ran 2
3


>>Click here to continue<<

Scala bin




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)