A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/1999-May/095219.html below:

[Python-Dev] coroutines vs. continuations vs. threads

[Python-Dev] coroutines vs. continuations vs. threadsJeremy Hylton jeremy at cnri.reston.va.us
Mon May 17 20:43:34 CEST 1999
>>>>> "AW" == Aaron Watters <arw at ifu.net> writes:

  AW> The illustrious Sam Rushing avers:
  >> Continuations are more powerful than coroutines, though I admit
  >> they're a bit esoteric.  I programmed in Scheme for years without
  >> seeing the need for them.  But when you need 'em, you *really*
  >> need 'em.  No way around it.

  AW> Frankly, I think I thought I understood this once but now I know
  AW> I don't.  How're continuations more powerful than coroutines?
  AW> And why can't they be implemented using threads (and semaphores
  AW> etc)?

I think I understood, too.  I'm hoping that someone will debug my
answer and enlighten us both.

A continuation is a mechanism for making control flow explicit.  A
continuation is a means of naming and manipulating "the rest of the
program."   In Scheme terms, the continuation is the function that the 
value of the current expression should be passed to.  The call/cc
mechanisms lets you capture the current continuation and explicitly
call on it.  The most typical use of call/cc is non-local exits, but
it gives you incredible flexibility for implementing your control
flow.

I'm fuzzy on coroutines, as I've only seen them in "Structure
Programming" (which is as old as I am :-) and never actually used
them.  The basic idea is that when a coroutine calls another
coroutine, control is transfered to the second coroutine at the point
at which it last left off (by itself calling another coroutine or by
detaching, which returns control to the lexically enclosing scope).

It seems to me that coroutines are an example of the kind of control
structure that you could build with continuations.  It's not clear
that the reverse is true.

I have to admit that I'm a bit unclear on the motivation for all
this.  As Gordon said, the state machine approach seems like it would
be a good approach.

Jeremy


More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4