|
Edinburgh Research Archive >
Informatics, School of >
Informatics thesis and dissertation collection >
Please use this identifier to cite or link to this item:
http://hdl.handle.net/1842/4683
|
| Title: | Abstraction for web programming |
| Authors: | Yallop, Jeremy |
| Supervisor(s): | Wadler, Philip |
| Issue Date: | 2010 |
| Publisher: | The University of Edinburgh |
| Abstract: | This thesis considers several instances of abstraction that arose in the design and implementation
of the web programming language Links. The first concerns user interfaces, specified
using HTML forms. We wish to construct forms from existing form fragments without introducing
dependencies on the implementation details of those fragments. Surprisingly, many
existing web systems do not support this simple scenario. We present a library which captures
the essence of form abstraction, and extend it with more practical facilities, such as validation
of the HTML a program produces and of the input a user submits.
An important part of our library is a simple semantics, given as the composition of three
primitive “idioms”, an interface to computation introduced by McBride and Paterson. In order
to justify this approach we present a comparison of idioms with the related notions of monads
and arrows, refining the informal claims in the literature.
Our library forms part of the Links framework for stateless web interactions. We describe a
related aspect of this system, a preprocessor that derives generic instances of functions, which
we use to serialise server state between client requests. The abstraction in this case involves
the shape of datatypes: the serialisation operation is specified independently of the particular
types involved.
Our final instance of abstraction involves abstract types. Functional programming languages
typically offer one of two styles of abstract type: the abstraction boundary may be
drawn using a private data constructor, or using a type signature. We show that there is a pair
of semantics-preserving translations between these two styles. In the light of this, we revisit
the decision of the Haskell designers to offer the constructor style, and define a library that
supports signature-style definitions in Haskell by translation into the constructor style. |
| Sponsor(s): | funded by EPSRC |
| Keywords: | abstraction Links interfaces monads arrows |
| URI: | http://hdl.handle.net/1842/4683 |
| Appears in Collections: | Informatics thesis and dissertation collection
|
Items in ERA are protected by copyright, with all rights reserved, unless otherwise indicated.
|