Czym są kontynuacje Scali i dlaczego z nich korzystać?

właśnie skończyłemProgramowanie w Scalii przyglądałem się zmianom między Scala 2.7 a 2.8. Najważniejsza wydaje się wtyczka kontynuacji, ale nie rozumiem, do czego jest ona przydatna ani jak działa. Widziałem, że jest to dobre dla asynchronicznych operacji we / wy, ale nie byłem w stanie dowiedzieć się dlaczego. Niektóre z bardziej popularnych zasobów na ten temat to:

Ograniczone kontynuacje i ScalaPrzejdź do ScalaSmak 2.8: kontynuacjeObjaśniono kontynuacje z ograniczeniami (w Scali)

I to pytanie na temat przepełnienia stosu:

Jakie są największe różnice między Scala 2.8 a Scala 2.7?

Niestety, żadne z tych odniesień nie próbuje zdefiniować, do czego są kontynuowane ani co mają robić funkcje shift / reset, a ja nie znalazłem żadnych referencji. Nie byłem w stanie zgadnąć, jak działają przykłady w połączonych artykułach (lub co robią), więc jednym ze sposobów, aby mi pomóc, może być przejście przez jedną z tych próbek. Nawet ten prosty z trzeciego artykułu:

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

Dlaczego wynik 8? To prawdopodobnie pomoże mi zacząć.

questionAnswers(6)

yourAnswerToTheQuestion