Abstract
SMLserver is an effcient multi-threadedWeb server platform for Standard ML programs. It provides access to a variety of different Relational Database Management Systems (RDBMSs), including Oracle, MySQL, and PostgreSQL. We describe the execution model and the region-based memory model of SMLserver and explain our solutions to the design issues we were confronted with in the development. We also describe our experience with programming and maintaining Web applications using Standard ML, which provides higher-order functions, static typing, and a rich module system. Through experiments based on user scenarios for some common Web tasks, the paper demonstrates the efficiency of SMLserver, both with respect to script execution and database connectivity.
Part time at Royal Veterinary and Agricultural University of Denmark.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Lars Birkedal, Mads Tofte, and Magnus Vejlstrup. From region inference to von Neumann machines via region representation inference. In Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 171–183. ACM Press, January 1996.
Claus Brabrand, Anders Møller, and Michael I. Schwartzbach. The <Bigwig> project. ACM Transactions on Internet Technology, 2(2), May 2002.
Peter Buneman and Atsushi Ohori. Polymorphism and type inference in database programming. ACM Transactions on Database Systems, 21(1):30–76, 1996.
Eelco Dolstra and Armijn Hemel. mod_haskell, January 2000. http://losser.st-lab.cs.uu.nl/mod_haskell.
Martin Elsman. Static interpretation of modules. In Procedings of Fourth International Conference on Functional Programming (ICFP’99), pages 208–219. ACM Press, September 1999.
Martin Elsman and Niels Hallenberg. A region-based abstract machine for the ML Kit. Technical Report TR–2002–18, IT University of Copenhagen, August 2002.
Martin Elsman and Niels Hallenberg. SMLserver—A Functional Approach to Web Publishing. The IT University of Copenhagen, February 2002. (154 pages). Available via http://www.smlserver.org.
Matthew Fluet and Riccardo Pucella. Phantom types and subtyping. In Second IFIP International Conference on Theoretical Computer Science (TCS’02), pages 448–460, August 2002.
Paul Graunke, Shriram Krishnamurthi, Robert Bruce Findler, and Matthias Felleisen. Automatically restructuring programs for the web. In 17th IEEE International Conference on Automated Software Engineering (ASE’01), September 2001.
Paul Graunke, Shriram Krishnamurti, Steve Van Der Hoeven, and Matthias Felleisen. Programming the web with high-level programming languages. In European Symposium On Programming (ESOP’01), April 2001.
Philip Greenspun. Philip and Alex’s Guide to Web Publishing. Morgan Kaufmann, May 1999. 596 pages. ISBN: 1558605347.
Niels Hallenberg, Martin Elsman, and Mads Tofte. Combining region inference and garbage collection. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’02). ACM Press, June 2002. Berlin, Germany.
Erik Meijer. Server side Web scripting in Haskell. Journal of Functional Programming, 10(1):1–18, January 2000.
Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997.
Open Market, Inc. FastCGI: A High-Performance Web Server Interface, April 1996. Technical white paper. Available from http://www.fastcgi.com.
Christian Queinnec. The influence of browsers on evaluators or, continuations to program web servers. In Fifth International Conference on Functional Programming (ICFP’00), September 2000.
Sergei Romanenko, Claudio Russo, and Peter Sestoft. Moscow ML Owner’s Manual, June 2000. For version 2.00. 35 pages.
Anders Sandholm and Michael I. Schwartzbach. A type system for dynamic web documents. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, January 2000.
Konrad Slind. Object language embedding in Standard ML of New Jersey. In Proceedings of the Second ML Workshop, CMU SCS Technical Report. Carnegie Mellon University, Pittsburgh, Pennsylvania, November 1991.
Lincoln Stein and Doug MacEachern. Writing Apache Modules with Perl and C. O’Reilly & Associates, April 1999. ISBN1-56592-567-X.
Peter Thiemann. Wash/CGI: Server-side Web scripting with sessions and typed, compositional forms. In Procedings of Practical Aspects of Declarative Languages (PADL’02). Springer-Verlag, January 2002. Portland, Oregon.
Mads Tofte, Lars Birkedal, Martin Elsman, Niels Hallenberg, Tommy Højfeld Olesen, and Peter Sestoft. Programming with regions in the ML Kit (for version 4). Technical Report TR–2001–07, IT University of Copenhagen, October 2001.
Mads Tofte and Jean-Pierre Talpin. Region-based memory management. Information and Computation, 132(2):109–176, 1997.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Elsman, M., Hallenberg, N. (2003). Web Programming with SMLserver. In: Dahl, V., Wadler, P. (eds) Practical Aspects of Declarative Languages. PADL 2003. Lecture Notes in Computer Science, vol 2562. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-36388-2_7
Download citation
DOI: https://doi.org/10.1007/3-540-36388-2_7
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-00389-2
Online ISBN: 978-3-540-36388-0
eBook Packages: Springer Book Archive