unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: George Neuner <gneuner2/@/comcast.net>
To: help-gnu-emacs@gnu.org
Subject: Re: The fundamental concept of continuations
Date: Thu, 11 Oct 2007 03:18:34 -0400	[thread overview]
Message-ID: <rqhrg3d2thcqaip790k1eb6t8cdk2g8d8v__34209.2511746616$1192096288$gmane$org@4ax.com> (raw)
In-Reply-To: 85zlyrutux.fsf@lola.goethe.zz

On Wed, 10 Oct 2007 12:49:58 +0200, David Kastrup <dak@gnu.org> wrote:

>gnuist006@gmail.com writes:
>
>> 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
>> (2) its syntax and semantics in emacs lisp, common lisp, scheme
>> (3) Is it present in python and java ?
>> (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.
>> (5) how does it compare to and superior to a function or subroutine
>> call. how does it differ.
>
>Basically, there is no difference to function/subroutine call.  The
>difference is just that there is no "call stack": the dynamic context
>for a call is created on the heap and is garbage-collected when it is
>no longer accessible.  A continuation is just a reference to the state
>of the current dynamic context.  As long as a continuation remains
>accessible, you can return to it as often as you like.

Yes and no.  General continuations, as you describe, are not the only
form continuations take.  Nor are they the most common form used.  The
most common continuations are function calls and returns.  Upward
one-shot continuations (exceptions or non-local returns) are the next
most common form used, even in Scheme.

Upward continuations can be stack implemented.  On many CPU's, using
the hardware stack (where possible) is faster than using heap
allocated structures.  For performance, some Scheme compilers go to
great lengths to identify upward continuations and nested functions
that can be stack implemented.

George
--
for email reply remove "/" from address

  parent reply	other threads:[~2007-10-11  7:18 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 ` .
     [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
2007-10-09 18:18 ` George Neuner
     [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     ` .
     [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 [this message]
     [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='rqhrg3d2thcqaip790k1eb6t8cdk2g8d8v__34209.2511746616$1192096288$gmane$org@4ax.com' \
    --to=gneuner2/@/comcast.net \
    --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).