El estilo de paso de continuación es una forma de flujo de control que implica pasar a las funciones el resto de la computación como un argumento de "continuación". La función en cuestión luego invoca esa continuación para continuar la ejecución del programa. Una forma de pensar en una continuación es como un cierre. La biblioteca de continuaciones de Scala trae continuaciones delimitadas en la forma de los shift
primitivos / reset
al lenguaje.
biblioteca de continuaciones: https://github.com/scala/scala-continuations
shift
y reset
son estructuras de flujo de control primitivas, como Int.+
es una operación primitiva y Long
es un tipo primitivo. Son más primitivos que cualquiera de los dos en que las continuaciones delimitadas se pueden usar para construir casi todas las estructuras de flujo de control. No son muy útiles "listos para usar", pero realmente brillan cuando se usan en bibliotecas para crear API ricas.
Las continuaciones y las mónadas también están estrechamente vinculadas. Las continuaciones se pueden hacer en la mónada de continuación , y las mónadas son continuaciones porque su operación de flatMap
toma una continuación como parámetro.