Что такое продолжение Scala и зачем их использовать?

Я только что закончилПрограммирование в Scala, и я'мы изучали изменения между Scala 2.7 и 2.8. Наиболее важным является плагин продолжения, но я нене понимаю, что этополезно или как это работает. Я'Я видел, что этохорошо для асинхронного ввода-вывода, но у меня нетЯ не мог понять почему. Вот некоторые из наиболее популярных ресурсов по этому вопросу:

Разграниченные продолжения и ScalaПерейти в СкалаВкус 2,8: продолжениеОбъясненные продолжения объяснены (в Scala)

И этот вопрос на стекеПереполнение:

Каковы самые большие различия между Scala 2.8 и Scala 2.7?

К сожалению, ни одна из этих ссылок не пытается определить, для чего предназначены продолжения или что должны делать функции сдвига / сброса, и я не имеюне нашел никаких ссылок, которые делают. У меня нетЯ не мог догадаться, как работает какой-либо из примеров в связанных статьях (или что они делают), поэтому одним из способов помочь мне было бы построчно просмотреть один из этих примеров. Даже этот простой из третьей статьи:

reset {
    ...
    shift { k: (Int=>Int) =>  // The continuation k will be the '_ + 1' below.
        k(7)
    } + 1
}
// Result: 8

Почему результат 8? Это, вероятно, поможет мне начать.

Ответы на вопрос(6)

Ваш ответ на вопрос