From: "." <foo@bar.biz>
To: help-gnu-emacs@gnu.org
Subject: Re: The fundamental concept of continuations
Date: 09 Oct 2007 06:09:52 GMT [thread overview]
Message-ID: <470b1b30$0$11022$4c368faf__22079.5616660782$1191912646$gmane$org@roadrunner.com> (raw)
In-Reply-To: 1191906949.179197.217470@57g2000hsv.googlegroups.com
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.
next prev parent reply other threads:[~2007-10-09 6:09 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1191906949.179197.217470@57g2000hsv.googlegroups.com>
2007-10-09 5:59 ` The fundamental concept of continuations Barb Knox
2007-10-09 6:07 ` Bakul Shah
2007-10-09 6:09 ` . [this message]
[not found] ` <470b1aa6$0$79886$742ec2ed@news.sonic.net>
2007-10-09 6:33 ` gnuist006
[not found] ` <1191911604.169846.244430@r29g2000hsg.googlegroups.com>
2007-10-09 7:15 ` Bakul Shah
2007-10-09 7:11 ` Peter Danenberg
2007-10-09 12:05 ` Matthias Benkard
[not found] ` <470b1b30$0$11022$4c368faf@roadrunner.com>
2007-10-09 6:34 ` gnuist006
[not found] ` <1191911662.983658.79540@g4g2000hsf.googlegroups.com>
2007-10-09 10:00 ` Tim Bradshaw
[not found] ` <1191924032.449463.13290@22g2000hsm.googlegroups.com>
2007-10-09 10:13 ` Diez B. Roggisch
2007-10-09 12:50 ` Matthias Blume
2007-10-09 13:50 ` josephoswald+gg@gmail.com
2007-10-09 19:20 ` gnuist006
[not found] ` <m2641g1mgn.fsf@my.address.elsewhere>
2007-10-09 19:37 ` gnuist006
2007-10-09 20:41 ` Chung-chieh Shan
2007-10-10 0:47 ` Matthias Blume
[not found] ` <ok5tt4-2ij.ln1@mantle.rutgers.edu>
2007-10-10 4:52 ` Marlene Miller
[not found] ` <1191957606.187050.272820@v3g2000hsg.googlegroups.com>
2007-10-09 20:32 ` .
2007-10-09 18:18 ` George Neuner
[not found] ` <m5ang3h11oorvsrkit4q1moi6mirofbdbr@4ax.com>
2007-10-09 19:24 ` gnuist006
2007-10-09 19:27 ` Jeff M.
2007-10-10 4:39 ` Marlene Miller
[not found] ` <8IYOi.658994$p47.379449@bgtnsc04-news.ops.worldnet.att.net>
2007-10-10 4:46 ` Marlene Miller
2007-10-10 7:11 ` Dmitri Minaev
2007-10-10 10:49 ` David Kastrup
[not found] ` <85zlyrutux.fsf@lola.goethe.zz>
2007-10-11 7:18 ` George Neuner
[not found] ` <rqhrg3d2thcqaip790k1eb6t8cdk2g8d8v@4ax.com>
2007-10-12 19:17 ` David Kastrup
[not found] ` <85lka8p2h4.fsf@lola.goethe.zz>
2007-10-13 3:11 ` Rob Warnock
2007-10-13 3:13 ` Paul Rubin
[not found] ` <1191931524.047907.98040@v3g2000hsg.googlegroups.com>
2007-10-13 23:14 ` Alex Martelli
[not found] ` <see-36543E.18592809102007@lust.ihug.co.nz>
2007-10-09 6:24 ` gnuist006
[not found] ` <1191911045.604596.50110@19g2000hsx.googlegroups.com>
2007-10-09 13:21 ` Joel J. Adamson
2007-10-14 22:56 ` Lawrence D'Oliveiro
2007-10-15 4:17 ` George Neuner
2007-10-09 5:15 gnuist006
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='470b1b30$0$11022$4c368faf__22079.5616660782$1191912646$gmane$org@roadrunner.com' \
--to=foo@bar.biz \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).