Continuation
From HaskellWiki
(Difference between revisions)
(→Powerful metaphors, images: Adding David Madore's ``dynamic goto'', ``label for goto'' metaphor) |
m (Link directly to the referred-to section in David Madore's call/cc homepage) |
||
| Line 7: | Line 7: | ||
* “In computing, a continuation is a representation of the execution state of a program (for example, the call stack) at a certain point in time” (Wikipedia's [http://en.wikipedia.org/wiki/Continuation Continuation]). | * “In computing, a continuation is a representation of the execution state of a program (for example, the call stack) at a certain point in time” (Wikipedia's [http://en.wikipedia.org/wiki/Continuation Continuation]). | ||
* “Continuations represent the future of a computation, as a function from an intermediate result to the final result“ ([http://www.nomaware.com/monads/html/contmonad.html Continuation monad] section in Jeff Newbern's All About Monads) | * “Continuations represent the future of a computation, as a function from an intermediate result to the final result“ ([http://www.nomaware.com/monads/html/contmonad.html Continuation monad] section in Jeff Newbern's All About Monads) | ||
| - | * “At its heart, <code>call/cc</code> is something like the <code>goto</code> instruction (or rather, like a label for a <code>goto</code> instruction); but a Grand High Exalted <code>goto</code> instruction... The point about <code>call/cc</code> is that it is not a ''static'' (lexical) <code>goto</code> instruction but a ''dynamic'' one“ (David Madore's [http://www.madore.org/~david/computers/callcc.html A page about <code>call/cc</code>]) | + | * “At its heart, <code>call/cc</code> is something like the <code>goto</code> instruction (or rather, like a label for a <code>goto</code> instruction); but a Grand High Exalted <code>goto</code> instruction... The point about <code>call/cc</code> is that it is not a ''static'' (lexical) <code>goto</code> instruction but a ''dynamic'' one“ (David Madore's [http://www.madore.org/~david/computers/callcc.html#sec_intro A page about <code>call/cc</code>]) |
=== Links === | === Links === | ||
Revision as of 14:20, 24 May 2006
Contents |
1 General or introductory materials
1.1 Powerful metaphors, images
- “In computing, a continuation is a representation of the execution state of a program (for example, the call stack) at a certain point in time” (Wikipedia's Continuation).
- “Continuations represent the future of a computation, as a function from an intermediate result to the final result“ (Continuation monad section in Jeff Newbern's All About Monads)
- “At its heart,
call/ccis something like thegotoinstruction (or rather, like a label for agotoinstruction); but a Grand High Exaltedgotoinstruction... The point aboutcall/ccis that it is not a static (lexical)gotoinstruction but a dynamic one“ (David Madore's A page aboutcall/cc)
1.2 Links
- Wikipedia's Continuation is a surprisingly good introductory material on this topic. See also Continuation-passing style.
- Yet Another Haskell Tutorial written by Hal Daume III contains a section on continuation passing style (4.6 Continuation Passing Style, pp 53-56)
- HaWiki has a page on ContinuationPassingStyle, and some related pages linked from there, too.
- David Madore's A page about
call/ccdescribes the concept, and his The Unlambda Programming Language page shows how he implemented this construct in an esoteric functional programming language.
2 Continuation monad
- Jeff Newbern's All About Monads contains a section on it.
- Control.Monad.Cont is contained by Haskell Hierarchical Libraries.
