Shriram,<br><br>IMHO continuation is a great model for the web prior to the wide-spread of ajax.  With ajax or other RIA mechanism, most of the flow control moves to the client side.<br>
<br>Of course, ajax breaks if the users turn off javascript.  But this seems less and less of a concern these days.<br><br>Love to know what you think of ajax vs continuation.  Thanks,<br>yc<br><br><div class="gmail_quote">
On Mon, Apr 12, 2010 at 5:38 PM, Shriram Krishnamurthi <span dir="ltr">&lt;<a href="mailto:sk@cs.brown.edu" target="_blank">sk@cs.brown.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hi Johan,<br>
<br>
I want to focus on the first issue you raise, since I think Jay has<br>
done a good job of starting to address the rest.<br>
<br>
I think you&#39;re both overstating and understating the continuation<br>
issue here.  Two pertinent issues:<br>
<br>
- Continuations do not force you into a linear program stream.  It is<br>
quite common for continuations to represent multiple future options,<br>
returns to previous points, and so on.  That is, they represent all<br>
the richness of control flow that programs have.  In this sense, you<br>
are overstating their limitations.<br>
<br>
- We are very much concerned -- more so than just about anyone else --<br>
with how programs behave *in the face of user interactions*,<br>
especially those operations provided by the browser.  Indeed, we made<br>
the point that the browser buttons and operations are essentially new<br>
control operators in themselves, imposed from the outside on the<br>
program by the user (and perhaps not properly imagined by the<br>
programmer).  We provided a clean account of how one should arrange<br>
their data relative to what kind of user interaction experience one<br>
wanted the user to have.  In this sense, you are understating their<br>
utility for structuring the Web computation in all its glory.<br>
<br>
- We also realized the importance of giving meaning to these<br>
resumption points (continuations).  Thus we have not one control<br>
operator (SEND/SUSPEND) but four, to reflect the liveness or deadness<br>
of the prior and future computation.<br>
<br>
Some of this is hard to discern from our older papers, because we<br>
thought everyone understood these issues when writing the papers and<br>
later found that virtually nobody did.  Some things are clearer in our<br>
journal paper (2006 or 2007), as well as in my talks, some of which<br>
are linked from my Web page.  I will add that I don&#39;t think any other<br>
continuation-based framework (Seaside, etc.) achieved this level of<br>
maturity in thinking about computation and state.<br>
<br>
A different way to put it is that you are free to not use any<br>
continuations at all, and program in a much more traditional sense.<br>
Sometimes, however, you DO want to arrange for a linear (or other<br>
structured) flow of control.  For instance, maybe you need to gather<br>
personal and billing information, you want to do it over three pages<br>
(to keep the forms simple), and later pages should refer to earlier<br>
pages (to customize the presented text).  This is a small<br>
sub-computation that is perfect for structuring using SEND/SUSPEND.<br>
The rest of your Web app does not need to be written in this style.<br>
<br>
So, I do not see our use of continuations as a hindrance or a<br>
straightjacket.  Rather, you are free to use the traditional style<br>
where you want.  However, where you do need to structure a<br>
(sub-)computation, the continuations are there to make your<br>
computation&#39;s source code clear and hence make the structure explicit.<br>
Combined with Jay&#39;s more recent work on the systems side of things,<br>
this is all win, no loss.<br>
<br>
We&#39;d love to engage in this discussion further so we can really<br>
understand your viewpoint and hopefully clarify some of these issues,<br>
such that you can make the most informed choice.<br>
<font color="#888888"><br>
Shriram<br>
</font><div><div></div><div>_________________________________________________<br>
  For list-related administrative tasks:<br>
  <a href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme" target="_blank">http://list.cs.brown.edu/mailman/listinfo/plt-scheme</a><br>
</div></div></blockquote></div><br>