Abstract
There are at present two ways to write GUIs for functional code. One is to use standard GUI toolkits, with all the benefits they bring in terms of feature completeness, choice of platform, conformance to platform-specific look-and-feel, long-term viability, etc. How- ever, such GUI APIs mandate an imperative programming style for the GUI and related parts of the application. Alternatively, we can use a functional GUI toolkit. The GUI can then be written in a func- tional style, but at the cost of foregoing many advantages of stan- dard toolkits that often will be of critical importance. This paper introduces a light-weight framework structured around the notions of reactive values and reactive relations. It allows standard toolk- its to be used from functional code written in a functional style. We thus bridge the gap between the two worlds, bringing the ad- vantages of both to the developer. Our framework is available on Hackage and has been been validated through the development of non-trivial applications in a commercial context, and with different standard GUI toolkits.
- Peter Achten and Rinus Plasmeijer. Interactive functional objects in Clean. In Implementation of Functional Languages, pages 304–321. Springer, 1998. Google Scholar
Digital Library
- Peter Achten, Marko Van Eekelen, and Rinus Plasmeijer. Generic Graphical User Interfaces. In Implementation of Functional Languages, pages 152–167. Springer, 2005. Google Scholar
Digital Library
- C. P. R. Baaij, J. Kuper, and L. Schubert. Soosim: Operating system and programming language exploration. In G. Lipari and T. Cucinotta, editors, Proceedings of the 3rd International Workshop on Analysis Tools and Methodologies for Embedded and Real-time System (WATERS 2012), Pisa, Italy, pages 63–68, Italy, 2012. Giuseppe Lipari.Google Scholar
- John Backus. Can programming be liberated from the von neumann style? Commun. ACM, 21(8):613–641, 1978. Google Scholar
Digital Library
- Magnus Carlsson and Thomas Hallgren. FUDGETS: A graphical user interface in a lazy functional language. (Section 6):321–330, 1993.Google Scholar
- Antony Courtney and Conal Elliott. Genuinely Functional User Interfaces. In Proceedings of the 2001 Haskell Workshop, pages 41–69, 2001.Google Scholar
- Evan Czaplicki. Elm: Concurrent FRP for Functional GUIs. PhD thesis, 2012.Google Scholar
- Lászl´o Domoszlai, Bas Lijnse, and Rinus Plasmeijer. Parametric lenses: change notification for bidirectional lenses. In Proceedings of the Symposium on Trends in Functional Programming, Soesterberg, The Netherlands, May 2014. Accepted for publication.Google Scholar
Digital Library
- Jonathan Edwards. Coherent reaction. In Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications, pages 925–932. ACM, 2009. Google Scholar
Digital Library
- Conal Elliott and Paul Hudak. Functional reactive animation. In International Conference on Functional Programming, pages 163– 173, June 1997. Google Scholar
Digital Library
- Conal M Elliott. Tangible functional programming. ACM SIGPLAN Notices, 42(9):59–70, 2007. Google Scholar
Digital Library
- Mohamed Fayad and Douglas C. Schmidt. Object-oriented application frameworks. Commun. ACM, 40(10):32–38, October 1997. Google Scholar
Digital Library
- J Nathan Foster, Michael B Greenwald, Jonathan T Moore, Benjamin C Pierce, and Alan Schmitt. Combinators for bi-directional tree transformations: a linguistic approach to the view update problem. ACM SIGPLAN Notices, 40(1):233–246, 2005. Google Scholar
Digital Library
- Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1995. Google Scholar
Digital Library
- Jeremy Gibbons and Ralf Hinze. Just do it: Simple monadic equational reasoning. In ICFP, September 2011. Google Scholar
Digital Library
- Seth Gilbert and Nancy Lynch. Brewer’s conjecture and the feasibility of consistent, available, partition-tolerant web services. SIGACT News, 33(2):51–59, June 2002. Google Scholar
Digital Library
- S. Goderis. On the separation of user interface concerns: A Programmer’s Perspective on the Modularisation of User Interface Code. Asp / Vubpress / Upa, 2007.Google Scholar
- Tim Harris, Simon Marlow, Simon Peyton-Jones, and Maurice Herlihy. Composable memory transactions. In Proceedings of the Tenth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP ’05, pages 48–60, 2005. Google Scholar
Digital Library
- J. R. Heard. Beautiful code, compelling evidence. Technical report, 2008.Google Scholar
- George T Heineman. An instance-oriented approach to constructing product lines from layers. Technical Report, WPI CS Tech Report 05- 06, 2005.Google Scholar
- Kenneth Hoste. An Introduction to Gtk2Hs, a Haskell GUI Library. In Shae Erisson, editor, The Monad.Reader Issue 1. 2005.Google Scholar
- Graham Hutton and Diana Fulger. Reasoning About Effects: Seeing the Wood Through the Trees. In Proceedings of the Symposium on Trends in Functional Programming, Nijmegen, The Netherlands, May 2008.Google Scholar
- Roumen Kaiabachev, Walid Taha, and Angela Zhu. E-FRP with priorities. In Proceedings of the 7th ACM & IEEE international conference on Embedded software, EMSOFT ’’07, pages 221–230. ACM, 2007. Google Scholar
Digital Library
- Keera Studios. Keera Hails - Haskell on Rails. https://github. com/keera-studios/keera-hails.Google Scholar
- Glenn E. Krasner and Stephen T. Pope. A Cookbook for Using the Model-View Controller User Interface Paradigm in Smalltalk-80. J. Object Oriented Program., 1(3):26–49, August 1988. Google Scholar
Digital Library
- Glenn E Krasner, Stephen T Pope, et al. A Description of the Model-View-Controller User Interface paradigm in the Smalltalk-80 System. 1988.Google Scholar
- Hai Liu, Neal Glew, Leaf Petersen, and Todd A Anderson. The intel labs haskell research compiler. In Proceedings of the 2013 ACM SIGPLAN symposium on Haskell, pages 105–116. ACM, 2013. Google Scholar
Digital Library
- Conor McBride and Ross Paterson. Applicative programming with effects. Journal of functional programming, 18(01):1–13, 2008. Google Scholar
Digital Library
- Sean McDirmid and Wilson C Hsieh. Superglue: Component programming with object-oriented signals. In ECOOP 2006–Object-Oriented Programming, pages 206–229. Springer, 2006. Google Scholar
Digital Library
- Steffen Michels and Rinus Plasmeijer. Uniform data sources in a functional language. In Submitted for presentation at Symposium on Trends in Functional Programming, TFP, volume 12, 2012.Google Scholar
- Steffen Michels, Rinus Plasmeijer, and Peter Achten. iTask as a new paradigm for building GUI applications. In Implementation and Application of Functional Languages, pages 153–168. Springer, 2011. Google Scholar
Digital Library
- Brad A. Myers. Separating application code from toolkits: Eliminating the spaghetti of call-backs. In Proceedings of the 4th Annual ACM Symposium on User Interface Software and Technology, UIST ’91, pages 211–220, New York, NY, USA, 1991. ACM. Google Scholar
Digital Library
- Brad A. Myers. Why Are Human-Computer Interfaces Difficult to Design and Implement? Technical report, 1993. Google Scholar
Digital Library
- Henrik Nilsson, Antony Courtney, and John Peterson. Functional reactive programming, continued. In Proceedings of the 2002 ACM SIGPLAN workshop on Haskell, pages 51–64. ACM, 2002. Google Scholar
Digital Library
- Rob Noble and Colin Runciman. Gadgets: Lazy functional components for graphical user interfaces. In Programming Languages: Implementations, Logics and Programs, pages 321–340. Springer, 1995. Google Scholar
Digital Library
- Addy Osmani. Data-binding revolutions with Object.observe().Google Scholar
- Bryan O’Sullivan, John Goerzen, and Don Stewart. Real World Haskell. O’Reilly Media, Inc., 2008. Google Scholar
Digital Library
- Gergely Patai. Eventless reactivity from scratch. Draft Proceedings of Implementation and Application of Functional Languages (IFL’09), pages 126–140, 2009.Google Scholar
- Ivan Perez. 1st Year PhD Report. http://www.cs.nott.ac.uk/ ~ixp/, December 2014.Google Scholar
- Simon L Peyton Jones and Philip Wadler. Imperative functional programming. In Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 71–84. ACM, 1993. Google Scholar
Digital Library
- Benjamin C. Pierce. Combinators for bi-directional tree transformations: A linguistic approach to the view update problem, October 2004.Google Scholar
- Invited talk at New England Programming Languages Symposium.Google Scholar
- Werner Vogels. Eventually consistent. Commun. ACM, 52(1):40–44, January 2009. Google Scholar
Digital Library
Index Terms
Bridging the GUI gap with reactive values and relations
Recommendations
Bridging the GUI gap with reactive values and relations
Haskell '15: Proceedings of the 2015 ACM SIGPLAN Symposium on HaskellThere are at present two ways to write GUIs for functional code. One is to use standard GUI toolkits, with all the benefits they bring in terms of feature completeness, choice of platform, conformance to platform-specific look-and-feel, long-term ...
WebWiseTclTk: a safe-Tcl/Tk-based toolkit enhanced for the world wide web
TCLTK'98: Proceedings of the 6th conference on Annual Tcl/Tk Workshop, 1998 - Volume 6The WebWiseTclTk toolkit is an enhancement of the existing feature set of Safe-Tcl and Safe-Tk that does not compromise security. The toolkit re-defines the functionality of the auto_load mechanism in Tcl such that it works for packages located anywhere ...






Comments