Stealing from Noel Welsh's [link|http://schematics.sourceforge.net/scheme-london/continuations.html|Continuations]:

Continuations are useful wherever we want to alter the control flow of a computation. Examples include:
  • Loops
  • Coroutines
  • Exceptions, including exceptions that allow you to resume the computation having fixed the problem
  • Backtracking as in Prolog
  • Non-deterministic programming
  • Cooperative Threading


In the case of backtracking, think of things like regular expression searches where you need to traverse up and down (sideways and backwards) through text to find matches. Continuations help in keeping things moving forward.

In the case of coroutines, think of more sophisticated for-each type loops, where the iteration calls a feeder process to supply the iteration.