[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

A plea for a new old language



Dan:

I'm confused by your message.

The use of CPS is orthogonal to the presence of continuations:

- there are implementations of languages with continuations that don't
  use CPS;

- there are implementations of languages without continuations that do
  use CPS.

Furthermore, as Amr Sabry pointed out in his thesis, many uses of CPS
(in compilers) are eventually undone by subsequent phases; he showed
that a much simpler transformation, the conversion to what he called
A-normal form, captures what most people really use CPS for: to give
names to intermediate values.

  A-normal form: There's a good reason for that odd name, and the
  "normal" part is particularly important (a property CPS doesn't
  share), but how's that for a great marketing name, eh?

Amr's lovely thesis has the whole story.  Go to

  http://www.cs.rice.edu/CS/PLT/Publications/Scheme/

and search for "Amr Sabry".  This should be required reading for
anyone using (the result of) CPS as an intermediate form.

Shriram

PS: Ruby has continuations, as do some variants of Smalltalk.  So that
    should satisfy your needs.