Abstract
We present a domain-specific language for constructing and configuring web applications distributed across any number of networked, heterogeneous systems. Our language is embedded in Haskell, provides a common framework for integrating components written in third-party EDSLs, and enables type-safe, access-controlled communication between nodes, as well as effortless sharing and movement of functionality between application components. We give an implementation of our language and demonstrate its applicability by using it to implement several important components of distributed web applications, including RDBMS integration, load balancing, and fine-grained sandboxing of untrusted third party code.
The rising popularity of cloud computing and heterogeneous computer architectures is putting a strain on conventional programming models, which commonly assume that one application executes on one machine, or at best on one out of several identical machines. With our language, we take the first step towards a programming model better suited for a computationally multicultural future.
- Benjamin Block, Joel Gustafsson, Michael Milakovic, Mattias Nilsen, and André Samuelsson. 2016. Evaluating Haste.App: Haskell in a web setting. Effects of using a seamless, linear, client-centric programming model. (2016).Google Scholar
- Quentin Bourgerie. 2014. The Opa framework. http://opalang.org/ . (2014).Google Scholar
- Jan Bracker and Andy Gill. 2014. Sunroof: A Monadic DSL for Generating JavaScript. In Practical Aspects of Declarative Languages. Vol. 8324. Springer International Publishing. Google Scholar
Digital Library
- Manuel MT Chakravarty, Gabriele Keller, and Simon Peyton Jones. 2005. Associated type synonyms. In ACM SIGPLAN Notices, Vol. 40. ACM. Google Scholar
Digital Library
- Adam Chlipala. 2015. Ur/Web: A simple model for programming the Web. In ACM SIGPLAN Notices, Vol. 50. ACM. Google Scholar
Digital Library
- Ezra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. 2007. Links: Web programming without tiers. In Formal Methods for Components and Objects. Springer. Google Scholar
Digital Library
- Tim Cuthbertson. 2014. The Conductance application server. http://conductance. io/ . (2014).Google Scholar
- Troy Bryan Downing. 1998. Java RMI: remote method invocation. IDG Books Worldwide, Inc. Google Scholar
Digital Library
- Richard A. Eisenberg, Dimitrios Vytiniotis, Simon Peyton Jones, and Stephanie Weirich. 2014. Closed Type Families with Overlapping Equations. In Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM. Google Scholar
Digital Library
- Anton Ekblad. 2015. A Distributed Haskell for the Modern Web. Licentiate Thesis. Chalmers Institute of Technology.Google Scholar
- Anton Ekblad. 2016. High-performance client-side web applications through Haskell EDSLs. In Proceedings of the 9th International Symposium on Haskell. ACM. Google Scholar
Digital Library
- Anton Ekblad and Koen Claessen. 2014. A Seamless, Client-centric Programming Model for Type Safe Web Applications. In Proceedings of the 2014 ACM SIGPLAN Symposium on Haskell. ACM. Google Scholar
Digital Library
- Tom Ellis. 2014. Opaleye. https://github.com/tomjaguarpaw/haskell-opaleye . (2014).Google Scholar
- Jeff Epstein, Andrew P. Black, and Simon Peyton-Jones. 2011. Towards Haskell in the Cloud. In Proceedings of the 4th ACM Symposium on Haskell. ACM. Google Scholar
Digital Library
- Andy Gill, Neil Sculthorpe, Justin Dawson, Aleksander Eskilson, Andrew Farmer, Mark Grebe, Jeffrey Rosenbluth, Ryan Scott, and James Stanton. 2015. The remote monad design pattern. In ACM SIGPLAN Notices, Vol. 50. ACM. Google Scholar
Digital Library
- Máté Karácsony and Koen Claessen. 2016. Using fusion to enable late design decisions for pipelined computations. In Proceedings of the 5th International Workshop on Functional High-Performance Computing. ACM. Google Scholar
Digital Library
- Geoffrey Mainland and Greg Morrisett. 2010. Nikola: embedding compiled GPU functions in Haskell. ACM Sigplan Notices 45 (2010). Google Scholar
Digital Library
- T Petricek and Don Syme. 2007. AFAX: Rich client/server web applications in F#. (2007).Google Scholar
- Gabriel Radanne, Jérôme Vouillon, Vincent Balat, and Vasilis Papavasileiou. 2016. ELIOM: tierless Web programming from the ground up. (2016).Google Scholar
- Manuel Serrano and Vincent Prunet. 2016. A glimpse of Hopjs. In International Conference on Functional Programming (ICFP). Google Scholar
Digital Library
- Tom Murphy Vii, Karl Crary, and Robert Harper. 2007. Type-safe distributed programming with ML5. In International Symposium on Trustworthy Global Computing. Springer. Google Scholar
Digital Library
Index Terms
A meta-EDSL for distributed web applications
Recommendations
A meta-EDSL for distributed web applications
Haskell 2017: Proceedings of the 10th ACM SIGPLAN International Symposium on HaskellWe present a domain-specific language for constructing and configuring web applications distributed across any number of networked, heterogeneous systems. Our language is embedded in Haskell, provides a common framework for integrating components ...
High-performance client-side web applications through Haskell EDSLs
Haskell '16We present Aplite, a domain-specific language embedded in Haskell for implementing performance-critical functions in client-side web applications. In Aplite, we apply partial evaluation, multi-stage programming and techniques adapted from machine code-...
High-performance client-side web applications through Haskell EDSLs
Haskell 2016: Proceedings of the 9th International Symposium on HaskellWe present Aplite, a domain-specific language embedded in Haskell for implementing performance-critical functions in client-side web applications. In Aplite, we apply partial evaluation, multi-stage programming and techniques adapted from machine code-...







Comments