Monad transformers and modular interpreters
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Software—Practice & Experience
A runtime system for interactive Web services
WWW '99 Proceedings of the eighth international conference on World Wide Web
Science of Computer Programming - Special issue on mathematics of program construction
The influence of browsers on evaluators or, continuations to program web servers
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
HTTP Cookies: Standards, privacy, and politics
ACM Transactions on Internet Technology (TOIT)
Abstracting application-level web security
Proceedings of the 11th international conference on World Wide Web
ACM Transactions on Internet Technology (TOIT)
Professional ASP.NET 1.0, Special Edition
Professional ASP.NET 1.0, Special Edition
Proceedings of the 24th International Conference on Software Engineering
XML templates and caching in WASH
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Automatically Restructuring Programs for the Web
Proceedings of the 16th IEEE international conference on Automated software engineering
Extending Java for high-level Web service construction
ACM Transactions on Programming Languages and Systems (TOPLAS)
Server side web scripting in Haskell
Journal of Functional Programming
Developing a high-performance web server in Concurrent Haskell
Journal of Functional Programming
A typed representation for HTML and XML documents in Haskell
Journal of Functional Programming
Software generation of practically strong random numbers
SSYM'98 Proceedings of the 7th conference on USENIX Security Symposium - Volume 7
Experience with a domain specific language for form-based services
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
ESOP'03 Proceedings of the 12th European conference on Programming
XML templates and caching in WASH
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Empirical Software Engineering
User-level transactional programming in Haskell
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Expressing and exploiting concurrency in networked applications with aspen
Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programming
Better abstractions for secure server-side scripting
Proceedings of the 17th international conference on World Wide Web
The Essence of Form Abstraction
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
JavaGI in the battlefield: practical experience with generalized interfaces
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
ICWE'07 Proceedings of the 7th international conference on Web engineering
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Server enforced program safety for web application engineering
Journal of Web Engineering
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Server-side web programming in WASH
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Hi-index | 0.00 |
WASH/CGI is an embedded domain-specific language for server-side Web scripting. Due to its reliance on the strongly typed, purely functional programming language Haskell as a host language, it is highly flexible and---at the same time---it provides extensive guarantees due to its pervasive use of type information.WASH/CGI can be structured into a number of sublanguages addressing different aspects of the application. The document sublanguage provides tools for the generation of parameterized XHTML documents and forms. Its typing guarantees that almost all generated documents are valid XHTML documents. The session sublanguage provides a session abstraction with a transparent notion of session state and allows the composition of documents and Web forms to entire interactive scripts. Both are integrated with the widget sublanguage which describes the communication (parameter passing) between client and server. It imposes a simple type discipline on the parameters that guarantees that forms posted by the client are always understood by the server. That is, the server never asks for data not submitted by the client and the data submitted by the client has the type requested by the server. In addition, parameters are received in their typed internal representation, not as strings. Finally, the persistence sublanguage deals with managing shared state on the server side as well as individual state on the client side. It presents shared state as an abstract data type, where the script can control whether it wants to observe mutations due to concurrently executing scripts. It guarantees that states from different interaction threads cannot be confused.