The Essence of Form Abstraction

  • Ezra Cooper
  • Sam Lindley
  • Philip Wadler
  • Jeremy Yallop
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5356)


Abstraction is the cornerstone of high-level programming; HTML forms are the principal medium of web interaction. However, most web programming environments do not support abstraction of form components, leading to a lack of compositionality. Using a semantics based on idioms, we show how to support compositional form construction and give a convenient syntax.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Atkey, R.: Parameterised notions of computation. In: MSFP (2006)Google Scholar
  2. 2.
    Balat, V.: Ocsigen: typing web interaction with objective caml. In: ML Workshop 2006, pp. 84–94 (2006)Google Scholar
  3. 3.
    Benton, N., Hughes, J., Moggi, E.: Monads and effects. In: Barthe, G., Dybjer, P., Pinto, L., Saraiva, J. (eds.) APPSEM 2000. LNCS, vol. 2395, pp. 42–122. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  4. 4.
    Brabrand, C., Møller, A., Schwartzbach, M.I.: Static validation of dynamically generated HTML. In: PASTE, pp. 38–45 (2001)Google Scholar
  5. 5.
    Christensen, A.S., Møller, A., Schwartzbach, M.I.: Extending Java for high-level web service construction. TOPLAS 25(6), 814–875 (2003)CrossRefGoogle Scholar
  6. 6.
    Cooper, E., Lindley, S., Wadler, P., Yallop, J.: Links: web programming without tiers. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2006. LNCS, vol. 4709, pp. 266–296. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  7. 7.
    Cooper, E., Lindley, S., Wadler, P., Yallop, J.: An idiom’s guide to formlets. Technical Report EDI-INF-RR-1263, University of Edinburgh (2008)Google Scholar
  8. 8.
    Eidhof, C.: Formlets in Haskell (2008),
  9. 9.
    Elsman, M., Larsen, K.F.: Typing XHTML web applications in ML. In: Jayaraman, B. (ed.) PADL 2004. LNCS, vol. 3057, pp. 224–238. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  10. 10.
    Graunke, P.T., Krishnamurthi, S., Van Der Hoeven, S., Felleisen, M.: Programming the web with high-level programming languages. In: Sands, D. (ed.) ESOP 2001. LNCS, vol. 2028, pp. 122–136. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  11. 11.
    Hanus, M.: Type-oriented construction of web user interfaces. In: PPDP 2006, pp. 27–38 (2006)Google Scholar
  12. 12.
    Hanus, M.: Putting declarative programming into the web: Translating Curry to JavaScript. In: PPDP 2007, pp. 155–166 (2007)Google Scholar
  13. 13.
    Hosoya, H., Pierce, B.C.: XDuce: A statically typed XML processing language. ACM Trans. Internet Techn. 3(2), 117–148 (2003)CrossRefGoogle Scholar
  14. 14.
    Hughes, J.: Generalising monads to arrows. Sci. Comput. Program. 37(1-3), 67–111 (2000)MathSciNetCrossRefMATHGoogle Scholar
  15. 15.
    Lift website (March 2008),
  16. 16.
    Lindley, S.: Many holes in Hindley-Milner. In: ML Workshop 2008 (2008)Google Scholar
  17. 17.
    Lindley, S., Wadler, P., Yallop, J.: Idioms are oblivious, arrows are meticulous, monads are promiscuous. In: Capretta, V., McBride, C. (eds.) MSFP 2008, Reykjavik, Iceland (2008)Google Scholar
  18. 18.
    McBride, C.: Idioms, 2005. In: SPLS (June 2005),
  19. 19.
    McBride, C., Paterson, R.: Applicative programming with effects. Journal of Functional Programming 18(1) (2008)Google Scholar
  20. 20.
    Moggi, E.: Computational lambda-calculus and monads. In: LICS 1989, pp. 14–23 (1989)Google Scholar
  21. 21.
    Møller, A., Schwartzbach, M.I.: The design space of type checkers for XML transformation languages. In: Eiter, T., Libkin, L. (eds.) ICDT 2005. LNCS, vol. 3363, pp. 17–36. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  22. 22.
    PHP Hypertext Preprocessor (March 2008),
  23. 23.
    Plasmeijer, R., Achten, P.: iData for the world wide web: Programming interconnected web forms. In: Hagiya, M., Wadler, P. (eds.) FLOPS 2006. LNCS, vol. 3945, pp. 242–258. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  24. 24.
    Plasmeijer, R., Achten, P., Koopman, P.: iTasks: executable specifications of interactive work flow systems for the web. SIGPLAN Not. 42(9), 141–152 (2007)CrossRefGoogle Scholar
  25. 25.
    Ruby on Rails website (March 2008),
  26. 26.
    Strugnell, S.: Creating linksCollab: an assessment of Links as a web development language. B.Sc thesis, University of Edinburgh (2008),
  27. 27.
    Thiemann, P.: A typed representation for HTML and XML documents in Haskell. J. Funct. Program. 12(4&5), 435–468 (2002)MathSciNetMATHGoogle Scholar
  28. 28.
    Thiemann, P.: An embedded domain-specific language for type-safe server-side web scripting. ACM Trans. Inter. Tech. 5(1), 1–46 (2005)CrossRefGoogle Scholar
  29. 29.
    Wadler, P.: Monads for functional programming. In: Jeuring, J., Meijer, E. (eds.) AFP 1995. LNCS, vol. 925, pp. 24–52. Springer, Heidelberg (1995)CrossRefGoogle Scholar
  30. 30.
    Wadler, P., Thiemann, P.: The marriage of effects and monads. ACM Trans. Comput. Log. 4(1), 1–32 (2003)MathSciNetCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Ezra Cooper
    • 1
  • Sam Lindley
    • 1
  • Philip Wadler
    • 1
  • Jeremy Yallop
    • 1
  1. 1.School of InformaticsUniversity of EdinburghUK

Personalised recommendations