The fundamental concept of continuations

gnuist006 at gmail.com gnuist006 at gmail.com
Tue Oct 9 08:34:22 CEST 2007


On Oct 8, 11:09 pm, "." <f... at bar.biz> wrote:
> On Tue, 09 Oct 2007 05:15:49 +0000, gnuist006 wrote:
> > Again I am depressed to encounter a fundamentally new concept that I
> > was all along unheard of. Its not even in paul graham's book where i
> > learnt part of Lisp. Its in Marc Feeley's video.
>
> > Can anyone explain:
>
> > (1) its origin
>
> One of the lambda papers, I think.  I don't remember which.
>
> > (2) its syntax and semantics in emacs lisp, common lisp, scheme
>
> elisp and Common Lisp don't have them (although sbcl and maybe others user
> continuations internally).  In scheme CALL-WITH-CURRENT-CONTINUATION takes
> a function of one argument, which is bound to the current continuation.
> Calling the continuation on some value behaves like
> CALL-WITH-CURRENT-CONTINUATION returning that value.  So
>  (call/cc (lambda (k) (k 42))) => 42
> You can think of it as turning the whatever would happen after call/cc
> was called into a function.  The most practical use for continuations in
> implementing control structures, though there are some other neat tricks
> you can play with them.
>
> > (3) Is it present in python and java ?
>
> Certainly not Java, I dunno about Python.  I've never seen someone use
> them in Python, but the pythonistas seem to want to add everything but a
> decent lambda to their language so I wouldn't be surprised if someone had
> added a call/cc.  Ruby has it.
>
> > (4) Its implementation in assembly. for example in the manner that
> > pointer fundamentally arises from indirect addressing and nothing new.
> > So how do you juggle PC to do it.
>
> You have Lisp in Small Pieces.  Read Lisp in Small Pieces.
>
> > (5) how does it compare to and superior to a function or subroutine
> > call. how does it differ.
>
> You use them like a function call.  You can also use them like
> setjmp/longjmp in C.  You can implement coroutines with them, or
> events, or simulate non-determinism or write things like ((call/cc call/cc)
> (call/cc call/cc)) and make your head explode, use it like goto's inbred
> second cousin or in general whatever perverse things you might like to do
> with the flow of control in your program.
>
>
>
> > Thanks a lot.
>
> > (6) any good readable references that explain it lucidly ?
>
> Lisp in Small Pieces for implementation details,  the Scheme Programming
> Language for examples.

which lambda paper ?




More information about the Python-list mailing list