Tierless Modules

Abstract : Tierless Web programming languages allow to combine client-side and server-side programming in a single program. This allows to define expressions with both client and server parts, and at the same time provides good static guarantees regarding client-server communication. However, these nice properties come at a cost: most tierless languages offer very poor support for modularity and separate compilation. To regain this modularity and ooer a larger-scale notion of composition, we propose to leverage a well-known tool: ML-style modules. In this article, we show how to extend the OCaml module system with tierless annotations that specify whether some definitions should be on the server, on the client, or both. In modern ML languages, the module system is a layer separate from the expression language. Our work relies on Eliom for the expression language. Eliom is an ML tierless Web programming language that provides type-safe communication and an efficient execution model. We complement that with a module language that preserves all the desirable properties of Eliom in terms of typing and efficiency, allows separate compilation, integrates well with the vanilla OCaml module language, and supports datatype abstraction.
Document type :
Preprints, Working Papers, ...
Liste complète des métadonnées

https://hal.archives-ouvertes.fr/hal-01485362
Contributor : Gabriel Radanne <>
Submitted on : Wednesday, March 8, 2017 - 4:21:22 PM
Last modification on : Friday, January 4, 2019 - 5:33:38 PM
Document(s) archivé(s) le : Friday, June 9, 2017 - 1:49:06 PM

File

main.pdf
Files produced by the author(s)

Licence


Distributed under a Creative Commons Attribution 4.0 International License

Identifiers

  • HAL Id : hal-01485362, version 1

Collections

Citation

Gabriel Radanne, Jérôme Vouillon. Tierless Modules. 2017. ⟨hal-01485362⟩

Share

Metrics

Record views

354

Files downloads

232