Composing Reactive GUIs in F# Using WebSharper

  • Joel Bjornson
  • Anton Tayanovskyy
  • Adam Granicz
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6647)


We present a generic library for constructing composable and interactive user interfaces in a declarative style. The paper introduces flowlets, an extension of formlets[3,2] providing interactivity. Real-world examples are given using the current implementation that compiles flowlets defined in F# to JavaScript with WebSharper.


functional reactive programming GUI F# flowlets formlets 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Carlsson, M., Hallgren, T.: FUDGETS: a Graphical User Interface in a Lazy Functional Language. In: FPCA 1993: Proceedings of the Conference on Functional Programming Languages and Computer Architecture, pp. 321–330. ACM, New York (1993)CrossRefGoogle Scholar
  2. 2.
    Cooper, E., Lindley, S., Wadler, P., Yallop, J.: An Idioms Guide to Formlets. Technical report, University of Edinburgh (2008)Google Scholar
  3. 3.
    Cooper, E., Lindley, S., Wadler, P., Yallop, J.: The Essence of Form Abstraction. In: Sixth Asian Symposium on Programming Languages and Systems (2008)Google Scholar
  4. 4.
    Cooper, G., Krishnamurthi, S.: Embedding Dynamic Dataflow in a Call-by-Value Language. In: Sestoft, P. (ed.) ESOP 2006. LNCS, vol. 3924, pp. 294–308. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  5. 5.
    Courtney, A., Nilsson, H., Peterson, J.: The Yampa Arcade. In: Haskell 2003: Proceedings of the 2003 ACM SIGPLAN workshop on Haskell, pp. 7–18. ACM, New York (2003)Google Scholar
  6. 6.
    Elliott, C., Hudak, P.: Functional Reactive Animation. In: ICFP 1997: Proceedings of the Second ACM SIGPLAN International Conference on Functional Programming, pp. 263–273. ACM, New York (1997)CrossRefGoogle Scholar
  7. 7.
    Hudak, P.: Functional Reactive Programming. In: Swierstra, S. (ed.) ESOP 1999. LNCS, vol. 1576, pp. 67–67. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  8. 8.
    Hudak, P., Courtney, A., Nilsson, H., Peterson, J.: Arrows, Robots, and Functional Reactive Programming. In: Jeuring, J., Jones, S. (eds.) AFP 2002. LNCS, vol. 2638, pp. 1949–1949. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  9. 9.
    Leroy, X.: The OCaml Programming Language (1998),
  10. 10.
    Meyerovich, L.A., Guha, A., Baskin, J., Cooper, G.H., Greenberg, M., Bromfield, A., Krishnamurthi, S.: Flapjax: a Programming Language for Ajax Applications. In: OOPSLA 2009: Proceeding of the 24th ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications, pp. 1–20. ACM, New York (2009)CrossRefGoogle Scholar
  11. 11.
    Moggi, E.: Notions of Computation and Monads. Information and Computation 93(1), 55–92 (1991); Selections from 1989 IEEE Symposium on Logic in Computer ScienceMathSciNetzbMATHCrossRefGoogle Scholar
  12. 12.
    Plasmeijer, R., Achten, P.: The Implementation of iData. In: Butterfield, A., Grelck, C., Huch, F. (eds.) IFL 2005. LNCS, vol. 4015, pp. 106–123. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  13. 13.
    Sage, M.: FranTk - a Declarative GUI Language for Haskell. In: ICFP 2000: Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming, pp. 106–117. ACM, New York (2000)CrossRefGoogle Scholar
  14. 14.
    Taylor, C.J.: Formalising and Reasoning About Fudgets. Technical Report NOTTCS-TR-98-4, University of Nottingham (1998)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Joel Bjornson
    • 1
  • Anton Tayanovskyy
    • 1
  • Adam Granicz
    • 1
  1. 1.IntelliFactoryHungary

Personalised recommendations