Continuity

Created 2005-01-21 / Edited 2008-12-20

I think maybe this is outdated. You should go over to the continuity website now.

Continuation-Based Web-Programming Library for Perl

This is a slightly ''different'' approach to web-programming. Here we view a web application a lot more like a command-line driven program. Instead of your program being restarted with each request, we will pretend that your program picks up right where it left off. Here is a small example of a function in this context:

sub addTwo {
  my ($self) = @_;
  my $a = $self->getNum("Enter first number: ");
  my $b = $self->getNum("Enter second number: ");
  $self->disp("The sum of $a and $b is " . ($a + $b));
}

Now looking at this code it is very clear what is going on. First we prompt the user for the first number by calling the getNum method. At this point the progam is suspended, waiting for input from the user. The user sees a webpage with the prompt and an input box. Once they submit their answer, the program picks up where it left off, putting the value given into $a. The process is repeated for getting the second number and putting it into $b.

And thats the idea. This uses some Deep Magic called Continuations to make this work. Unfortunately Perl doesn't directly support this programming language concept (yet), so Continuity utilizes the Contize module to let Perl ''pretend'' that it has this power. In the tutorials we'll see how this will slightly change the way you code your applications.

Tutorial

Some of you don't want to hear so much discussion... you'd rather see code. So I've started a Continuity Tutorials page so that you can dive right in. Have fun.

Development

Notes / Ideas:

Comments / Contact

For comments there is a link at the bottom of this page, but also feel free to email me questions and thoughts (mailto:awwaiid@thelackthereof.org). This is of course an ongoing project which needs quite a bit of refinement. Your questions, comments, and contributions will give me the feedback I need to make this system useable and clean. If enough people inquire about this project, I'll set up a mailing list.

See Also