Abstract
The evolution of Web sites towards very dynamic applications makes it necessary to reconsider current Web programming technologies. We believe that Web development would benefit greatly from more abstract paradigms and that a more semantical approach would result in huge gains in expressiveness. In particular, functional programming provides a really elegant solution to some important Web interaction problems, but few frameworks take advantage of it.
The Ocsigen project is an attempt to provide global solutions to these needs. We present our experience in designing this general framework for Web programming, written in Objective Caml. It provides a fully featured Web server and a framework for programming Web applications, with the aim of improving expressiveness and safety. This is done by taking advantage of functional programming and static typing as much as possible.
Supplemental Material
- Vincent Balat. Ocsigen: Typing Web interaction with Objective Caml. In International Workshop on ML, pages 84--94. ACM Press, 2006. ISBN 1-59593-483-9. doi: http://doi.acm.org/10.1145/1159876.1159889. Google Scholar
Digital Library
- Vincent Balat. Eliom programmer's guide. Technical report, Laboratoire PPS, CNRS, université Paris-Diderot, 2007. URL http://ocsigen.org/eliom.Google Scholar
- Véronique Benzaken, Giuseppe Castagna, and Alain Frisch. CDuce: An XML-centric general-purpose language. In ACM SIGPLAN International Conference on Functional Programming (ICFP), Uppsala, Sweden, pages 51--63, 2003. ISBN 1-58113-756-7. Google Scholar
Digital Library
- Benjamin Canou, Vincent Balat, and Emmanuel Chailloux. O'browser: Objective Caml on browsers. In ML '08: Proceedings of the 2008 ACM SIGPLAN workshop on ML, pages 69--78, New York, NY, USA, 2008. ACM. ISBN 978-1-60558-062-3. doi: http://doi.acm.org/10.1145/1411304.1411315. Google Scholar
Digital Library
- Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. Links: Web programming without tiers. In FMCO 2006, 2006. Google Scholar
Digital Library
- Olivier Danvy. Functional unparsing. Journal of Functional Programming, 8(6):621--625, 1998. Google Scholar
Digital Library
- Stéphane Ducasse, Adrian Lienhard, and Lukas Renggli. Seaside -- a multiple control flow web application framework. In Proceedings of ESUG Research Track 2004, pages 231--257, 2004.Google Scholar
- R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, and T. Berners-Lee. Hypertext transfer protocol -- HTTP/1.1, 1999. URL http://www.ietf.org/rfc/rfc2616.txt.Google Scholar
- Alain Frisch. OCaml + XDuce. In International conference on Functional programming (ICFP), pages 192--200, New York, NY, USA, 2006. ACM. doi: http://doi.acm.org/10.1145/1160074.1159829. Google Scholar
Digital Library
- Paul Graham. Beating the averages, 2001. URL http://www.paulgraham.com/avg.html.Google Scholar
- John Hughes. Generalising monads to arrows. Science of Computer Programming, 37(1--3):67--111, 2000. Google Scholar
Digital Library
- Shriram Krishnamurthi, Peter Walton Hopkins, Jay Mccarthy, Paul T. Graunke, Greg Pettyjohn, and Matthias Felleisen. Implementation and use of the PLT Scheme Web server. In Higher-Order and Symbolic Computation, 2007. Google Scholar
Digital Library
- Daan Leijen and Erik Meijer. Domain specific embedded compilers. In Domain-Specific Languages, pages 109--122, 1999. URL citeseer.ist.psu.edu/leijen99domain.html. Google Scholar
Digital Library
- Xavier Leroy, Damien Doligez, Jacques Garrigue, Jérôme Vouillon, and Dider Rémy. The Objective Caml system. Software and documentation available on the Web, 2008. URL http://caml.inria.fr/.Google Scholar
- Mark Nottingham and Robert Sayre. The Atom Syndication Format. RFC 4287, December 2005.Google Scholar
- Francois Pottier and Yann Régis-Gianas. Stratified type inference for generalized algebraic data types. In Proceedings of the 33rd ACM Symposium on Principles of Programming Languages (POPL'06), pages 232--244, Charleston, South Carolina, January 2006. Google Scholar
Digital Library
- Christian Queinnec. The influence of browsers on evaluators or, continuations to program web servers. In International conference on Functional programming (ICFP), pages 23--33, Montreal (Canada), September 2000. Google Scholar
Digital Library
- Christoph Sauer, Chuck Smith, and Tomas Benz. Wikicreole: a common wiki markup. In WikiSym '07: Proceedings of the 2007 international symposium on Wikis, pages 131--142, New York, NY, USA, 2007. ACM. ISBN 978-1-59593-861-9. doi: http://doi.acm.org/10.1145/1296951.1296966. Google Scholar
Digital Library
- Manuel Serrano, Erick Gallesio, and Florian Loitsch. Hop, a language for programming the Web 2.0. In Dynamic Languages Symposium, October 2006.Google Scholar
- Peter Thiemann. Wash/CGI: Server-side Web scripting with sessions and typed, compositional forms. In PADL '02, January 2002. Google Scholar
Digital Library
- Phil Trinder. Comprehensions, a query notation for DBPLs. In DBPL3: Proceedings of the third international workshop on Database programming languages : bulk types&persistent data, pages 55--68, San Francisco, CA, USA, 1992. Morgan Kaufmann Publishers Inc. ISBN 1-55860-242-9. Google Scholar
Digital Library
- Jérôme Vouillon. Lwt: a cooperative thread library. In ML '08: Proceedings of the 2008 ACM SIGPLAN workshop on ML, pages 3--12, New York, NY, USA, 2008. ACM. ISBN 978-1-60558-062-3. doi: http://doi.acm.org/10.1145/1411304.1411307. Google Scholar
Digital Library
- Hongwei Xi, Chiyan Chen, and Gang Chen. Guarded recursive datatype constructors. In Proceedings of the 30th ACM SIGPLAN Symposium on Principles of Programming Languages, pages 224--235, New Orleans, January 2003. Google Scholar
Digital Library
Index Terms
Experience report: ocsigen, a web programming framework
Recommendations
Experience report: ocsigen, a web programming framework
ICFP '09: Proceedings of the 14th ACM SIGPLAN international conference on Functional programmingThe evolution of Web sites towards very dynamic applications makes it necessary to reconsider current Web programming technologies. We believe that Web development would benefit greatly from more abstract paradigms and that a more semantical approach ...
Tierless Web Programming in the Large
WWW '18: Companion Proceedings of the The Web Conference 2018Tierless Web programming languages allow combining client-side and server-side programming in a single program. This allows defining expressions with both client and server parts, and at the same time provides good static guarantees regarding client-...
Eliom: tierless Web programming from the ground up
IFL 2016: Proceedings of the 28th Symposium on the Implementation and Application of Functional Programming LanguagesEliom is a dialect of OCaml for Web programming. It can be used both server and client-side. Server and client sections can also be mixed in the same file using syntactic annotations. This allows one to build a whole application as a single program, in ...









Comments