Bug #6706 ยป 0001-Improve-documentation-of-Continuation.patch
| cont.c | ||
|---|---|---|
|
/*
|
||
|
* Document-class: Continuation
|
||
|
*
|
||
|
* Continuation objects are generated by <code>Kernel#callcc</code>,
|
||
|
* after having <code>require</code>d <i>continuation</i>. They hold
|
||
|
* Continuation objects are generated by Kernel#callcc,
|
||
|
* after having +require+d <i>continuation</i>. They hold
|
||
|
* a return address and execution context, allowing a nonlocal return
|
||
|
* to the end of the <code>callcc</code> block from anywhere within a
|
||
|
* program. Continuations are somewhat analogous to a structured
|
||
|
* program. Continuations are somewhat analogous to a structured
|
||
|
* version of C's <code>setjmp/longjmp</code> (although they contain
|
||
|
* more state, so you might consider them closer to threads).
|
||
|
*
|
||
| ... | ... | |
|
* call-seq:
|
||
|
* callcc {|cont| block } -> obj
|
||
|
*
|
||
|
* Generates a <code>Continuation</code> object, which it passes to
|
||
|
* Generates a Continuation object, which it passes to
|
||
|
* the associated block. You need to <code>require
|
||
|
* 'continuation'</code> before using this method. Performing a
|
||
|
* <em>cont</em><code>.call</code> will cause the <code>callcc</code>
|
||
|
* <em>cont</em><code>.call</code> will cause the #callcc
|
||
|
* to return (as will falling through the end of the block). The
|
||
|
* value returned by the <code>callcc</code> is the value of the
|
||
|
* value returned by the #callcc is the value of the
|
||
|
* block, or the value passed to <em>cont</em><code>.call</code>. See
|
||
|
* class <code>Continuation</code> for more details. Also see
|
||
|
* <code>Kernel::throw</code> for an alternative mechanism for
|
||
|
* class Continuation for more details. Also see
|
||
|
* Kernel#throw for an alternative mechanism for
|
||
|
* unwinding a call stack.
|
||
|
*/
|
||