论文部分内容阅读
由于HTTP天生的无状态性质,Web程序设计中产生了这样一个问题:在两个连续的用户交互之间会遗忘状态信息。一个交互性的Web应用程序由一组脚本构成,每个交互都包含两个脚本,一个脚本向浏览器递交页面(然后结束),用户及时完成并提交表单,然后另一个(可能是不同的)脚本处理提交的表单。所以,应用程序逻辑分布在多个脚本之间。
由于浏览器还允许用户在交互中回溯,或者克隆一个正在处理中的交互过程,之后并行执行这两个交互过程,所以问题变得更加复杂。Web开发框架(例如Spring和Struts)允许处理多个交互,但是它们进一步提高了整体上已经很复杂的代码库的复杂性。
在本文中,我们将几种函数式方法应用到Web程序设计中,从而简化复杂Web应用程序的开发。作者将从介绍continuation的应用开始,逐步引入CPS,Trampoline,Lambda Lifting等函数式方法,通过用Scheme语言编写的一个CGI实例详细展示函数式方法的效果,并进一步将这些方法在C语言中实现。