Show simple item record

dc.contributor.advisorWadler, Philip
dc.contributor.authorYallop, Jeremy
dc.date.accessioned2011-01-26T10:21:20Z
dc.date.available2011-01-26T10:21:20Z
dc.date.issued2010
dc.identifier.urihttp://hdl.handle.net/1842/4683
dc.description.abstractThis 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.en
dc.contributor.sponsorEngineering and Physical Sciences Research Council (EPSRC)en
dc.language.isoenen
dc.publisherThe University of Edinburghen
dc.relation.hasversionEzra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. Links: web programming without tiers. In Formal Methods for Components and Objects, pages 266–296, Amsterdam, The Netherlands, 2006.en
dc.relation.hasversionEzra Cooper, Sam Lindley, PhilipWadler, and Jeremy Yallop. The essence of form abstraction. In Asian Symposium on Programming Languages and Systems, Bangalore, India, December 2008a.en
dc.relation.hasversionEzra Cooper, Sam Lindley, Philip Wadler, and Jeremy Yallop. An idiom’s guide to formlets. Technical Report EDI-INF-RR-1263, School of Informatics, University of Edinburgh, 2008b.en
dc.relation.hasversionSam Lindley, Philip Wadler, and Jeremy Yallop. The Arrow Calculus. Technical report, University of Edinburgh, 2008a.en
dc.relation.hasversionSam Lindley, Philip Wadler, and Jeremy Yallop. Idioms are oblivious, arrows are meticulous, monads are promiscuous. In Venanzio Capretta and Conor McBride, editors, Mathematically Structured Functional Programming, Reykjavik University, Iceland, July 2008b.en
dc.relation.hasversionSam Lindley, Philip Wadler, and Jeremy Yallop. The Arrow Calculus. Journal of Functional Programming, 20(1):51–69, January 2010.en
dc.relation.hasversionJeremy Yallop. Practical generic programming in OCaml. In Derek Dreyer, editor, ACM SIGPLAN Workshop on ML, Freiburg, Germany, October 2007.en
dc.subjectabstractionen
dc.subjectLinksen
dc.subjectinterfacesen
dc.subjectmonadsen
dc.subjectarrowsen
dc.titleAbstraction for web programmingen
dc.typeThesis or Dissertationen
dc.type.qualificationlevelDoctoralen
dc.type.qualificationnamePhD Doctor of Philosophyen


Files in this item

This item appears in the following Collection(s)

Show simple item record