The fundamental concept of continuations
gnuist006 at gmail.com
gnuist006 at gmail.com
Tue Oct 9 21:24:23 CEST 2007
Special thanks to many of you for your very decent replies.
On Oct 9, 11:18 am, George Neuner <gneuner2/@/comcast.net> wrote:
> On Tue, 09 Oct 2007 05:15:49 -0000, gnuist... at gmail.com 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
> Lambda calculus. Continuation is just a formal term for "what the
> code does next". It manifests, literally, as the next instruction(s)
> to be executed.
> >(2) its syntax and semantics in emacs lisp, common lisp, scheme
> Lisp does not have explicit continuations so there is no syntax for
> them. Continuations in Lisp mainly take the form of function calls,
> function returns, exceptions, conditions, etc. Sometimes code is
> written in "continuation passing style" (CPS) in which each function
> has one or more additional function parameters (the continuations) -
> the function terminates by passing its result as an argument to one of
> those continuation functions.
> Scheme has explicit continuations based on closures. Closure
> continuations are created using CALL-WITH-CURRENT-CONTINUATION
> (usually abbreviated as CALL/CC). Some Schemes also recognize a
> LET/CC form used mainly for escape continuations (exceptions).
> Scheme's closure continuations can be stored in data structures and
> used for complex control forms such as multitasking. Like Lisp,
> Scheme code also is sometimes written using CPS.
> >(3) Is it present in python and java ?
> It is present in all languages. It generally takes the form of
> procedure or function calls, returns, exceptions, etc.
> >(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.
> As I stated above, every function call or return _is_ a continuation
> ... their implementation is obvious.
> For the closure form used in Scheme, the implementation is to create a
> closure, a data structure containing the function address and some
> method of accessing the function's free variables, and to call the
> function. How you do this depends greatly on the instruction set.
> >(5) how does it compare to and superior to a function or subroutine
> >call. how does it differ.
> Calling closure continuations is a little more complicated and a bit
> slower than calling a normal function. Creating the closure in the
> first place may be simple or complicated depending on the complexity
> of the source code and the processor's instruction set.
> >Thanks a lot.
> >(6) any good readable references that explain it lucidly ?
> Get yourself a good textbook on compilers. Most of the techniques are
> applicable to all languages - even for seemingly very different
> languages, the differences in their compilers are simply in how the
> basic compilation techniques are combined.
> My favorite intermediate-level books are
> Aho, Sethi & Ullman. "Compilers: Principles, Techniques and Tools".
> 2nd Ed. 2006. ISBN 0-321-48681-1.
> The first edition from 1986, ISBN 0-201-10088-6, is also worth having
> if you can still find it. The 1st edition is mainly about procedural
> languages, the 2nd gives more time to functional languages and modern
> runtime issues like GC and virtual machines.
> Cooper & Torczon, "Engineering a Compiler", 2004.
> ISBN 1-55860-698-X (hardcover), 1-55860-699-8 (paperback).
> Also available as a restricted 90-day ebook fromhttp://rapidshare.com/files/24382311/155860698X.Morgan_20Kaufmann.Eng...
> There are also some decent intro books available online. They don't
> go into excruciating detail but they do cover the basics of code
> shaping which is what you are interested in.
> Torben Mogensen. "Basics of Compiler Design"http://www.diku.dk/~torbenm/Basics/
> "Engineering a Compiler". I don't have this author's name, nor can
> Google find it at the moment. I have a copy though (~2MB) - if you
> are interested, contact me by email and I'll send it to you.
> Also Google for free CS books. Many older books (including some
> classics) that have gone out of print have been released
> electronically for free download.
> for email reply remove "/" from address
More information about the Python-list