Composing the user interface with Haggis

  • Sigbjorn Finne
  • Simon Peyton Jones
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1129)


This tutorial presents Haggis, a graphical user interface framework written in the lazy functional language Haskell. The Haggis framework provides the programmer with a compositional view of graphical user interfaces, where complete GUI applications can be built by repeatedly composing together parts. The individual user interface components are treated as virtual I/O devices that can be interacted with by the application just as files and other ‘normal’ devices can. A key ingredient of Haggis is the use of concurrency to provide its compositional view of GUIs.


User Interface Graphical User Interface Functional Programming Window System Push Button 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Peter Achten. Interactive Functional Programs: Models, Methods, and Implementation. PhD thesis, University of Nijmegen, February 1996. ISBN 90-90009156-4.Google Scholar
  2. 2.
    Kavi Arya. Processes in a functional animation system. In Proceedings of the 4th ACM Conference on Functional Programming and Computer Architecture, pages 382–395, London, September 1989.Google Scholar
  3. 3.
    Paul Asente and Ralph Swick. X Window System Toolkit. Digital Press, 1990.Google Scholar
  4. 4.
    Magnus Carlsson and Thomas Hallgren. FUDGETS — a graphical user interface in a lazy functional language. In Proceedings of the 6th ACM Conference on Functional Programming and Computer Architecture, pages 321–330. ACM Press, 1993.Google Scholar
  5. 5.
    John Peterson et. al. Haskell 1.3: A non-strict, purely functional language. Technical Report YALEU/DCS/RR-1106, Department of Computing Science, Yale University, May 1996. World Wide Web version at Scholar
  6. 6.
    Sigbjorn Finne. The Haggis Manual. Available on the World Wide Web via the Haggis home page, April 1996. Url:http://www. Scholar
  7. 7.
    Sigbjorn Finne and Simon Peyton Jones. Pictures: A simple structured graphics model. In Glasgow Functional Programming Workshop, Ullapool, July 1995.Google Scholar
  8. 8.
    Emden W. Gansner and John H. Reppy. A Foundation for User Interface Construction. In Brad A. Myers, editor, Languages for Developing User Interfaces, pages 239–260. Jones and Bartlett Publishers, Inc., 1992.Google Scholar
  9. 9.
    Andrew Gordon. An Operational Semantics for I/O in a Lazy Functional Language. In Proceedings of the 6th ACM Conference on Functional Programming and Computer Architecture, pages 136–145, CopenHagen, June 1993. ACM Press.Google Scholar
  10. 10.
    Andrew D. Gordon. Functional Programming and Input/Output. Distinguished Dissertations in Computer Science. Cambridge University Press, 1994.Google Scholar
  11. 11.
    Andrew D. Gordon and Kevin Hammond. Monadic I/O in Haskell 1.3. In Paul Hudak, editor, Proceedings of the Haskell Workshop, pages 50–69, La Jolla, California, June 25 1995.Google Scholar
  12. 12.
    James Gosling, David S.H. Rosenthal, and Michelle Arden. The NeWS Book. The Sun Technical Reference Library. Springer Verlag, 1989.Google Scholar
  13. 13.
    Paul Hudak and Joseph H. Fasel. A Gentle Introduction to Haskell. ACM SIGPLAN Notices, 27(5), May 1992.Google Scholar
  14. 14.
    Simon L. Peyton Jones and Philip Wadler. Imperative functional programming. In ACM Conference on the Principles of Programming Languages, pages 71–84. ACM Press, January 1993.Google Scholar
  15. 15.
    Simon Peyton Jones, Andrew Gordon, and Sigbjorn Finne. Concurrent Haskell. In ACM Symposium on the Principles of Programming Languages, St. Petersburg Beach, Florida, January 1996.Google Scholar
  16. 16.
    Glenn E. Krasner and Stephen T. Pope. A cookbook for using the model-view-controller user interface paradigm in smalltalk-80. Journal of Object-Oriented Programming, 1(3):26–49, August/September 1988.Google Scholar
  17. 17.
    John Launchbury and Simon L. Peyton Jones. Lazy Functional State Threads. In Proceedings of the ACM Conference on Programming Language Design and Implementation, June 1994.Google Scholar
  18. 18.
    Mark Linton and Chuck Price. Building distributed user interfaces with fresco. In Proceedings of the Seventh X Technical Conference, pages 77–87, Boston, MA, January 1993.Google Scholar
  19. 19.
    Brad A. Myers. Separating application code from toolkits: Eliminating the spaghetti of callbacks. In Proceedings of the ACM SIGCHI '91 Conference on User Interface Software and Technology, page 2110220. ACM Press, November 11–13 1991.Google Scholar
  20. 20.
    Rob Noble and Colin Runciman. Gadgets: Lazy functional components for graphical user interfaces. In M. Hermenegildo and S.D. Swierstra, editors, Proceedings of the Seventh International Symposium on Programming Languages: Implementations, Logics and Programs, number 982 in LNCS, pages 321–340, Utrecht, The Netherlands, September 1995. Springer Verlag.Google Scholar
  21. 21.
    John Ousterhout. Tcl and the Tk Toolkit. Addison Wesley, 1994.Google Scholar
  22. 22.
    Rob Pike. Acme: A user interface for programmers. In Proceedings of the Winter 1994 USENIX Conference, pages 223–234, San Fransisco, 1994.Google Scholar
  23. 23.
    Robert W. Scheifler and James Gettys. X Window System. Digital Press, third edition, 1992.Google Scholar
  24. 24.
    Douglas A. Young and John A. Pew. The X Window System: Programming and Applications with Xt (OPEN LOOK Edition). Prentice Hall, 1992.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • Sigbjorn Finne
    • 1
  • Simon Peyton Jones
    • 1
  1. 1.Department of Computing ScienceUniversity of GlasgowUK

Personalised recommendations