Composing Haggis

  • Sigbjørn Finne
  • Simon Peyton Jones
Part of the Eurographics book series (EUROGRAPH)


Haggis is a purely-functional, multi-threaded user interface framework for composing interactive applications. It provides a compositional view of the world of user interface applications, applying to all aspects of the interface the principle of building a component from parts. Interactive components are viewed as virtual I/O devices that are composed together to make up complete applications. To fully support this style of programming, Haggis makes good use of the integral features of Haskell, a lazy, purely-functional language. The resulting system offers an extensible, modular and simple programming model for writing user interface applications at a high level of abstraction.

Two key ingredients that Haggis relies on to provide its compositional style are concurrency and monads, making it possible to write multi-threaded functional programs that interact with the Real World comfortably.


User Interface Interactive Behaviour Interactive Component Functional Programming Functional Language 
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]
    Adobe Systems Inc. PostScript language reference manual. Addison Wesley, second edition, 1990.Google Scholar
  2. [2]
    Paul R. Calder and Mark A. Linton. Glyphs: Flyweight objects for user interfaces. In ACM Symposium on User Interface Software and Technology, pages 92–101, 1990.Google Scholar
  3. [3]
    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
  4. [4]
    Sigbjorn Finne and Simon Peyton Jones. Pictures: A simple structured graphics model. In Glasgow Functional Programming Workshop, Ullapool, July 1995.Google Scholar
  5. [5]
    Emden W. Gansner and John H. Reppy. eXene. In Proceedings of the 1991 CMU Workshop on SML, October 31 1991.Google Scholar
  6. [6]
    H. R. Hartson, A. Siochi, and D. Hix. The UAN: A user-oriented representation for direct manipulation interface designs. ACM Transactions on Information Systems, 8 (3): 181–203, June 1990.CrossRefGoogle Scholar
  7. [7]
    Peter Henderson. Functional geometry. In ACM Symposium on LISP and Functional Programming, pages 179–187, 1982.CrossRefGoogle Scholar
  8. [8]
    Tyson R. Henry, Scott E. Hudson, and Gary L. Newell. Integrating gesture and snapping into a user interface toolkit. In Proceedings of UIST’90, pages 112–121, 1990.Google Scholar
  9. [9]
    Paul Hudak et al. Report on the programming language haskell version 1.2. ACMSIGPLAN Notices, 27 (5), May 1992.Google Scholar
  10. [10]
    Mark R. Jones. A system of constructor classes: overloading and implicit higher-order polymorphism. In Proceedings of the 6th ACM Conference on Functional Programming and Computer Architecture,Copenhagen, June 1993. ACM Press.Google Scholar
  11. [11]
    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
  12. [12]
    Mark A. Linton, J.M. Vlissides, and P.R. Calder. Composing user interfaces with InterViews. IEEE Computer, 22 (2): 8–22, February 1989.CrossRefGoogle Scholar
  13. [13]
    Brad A. Myers. A new model for handling input. ACM Transactions on Information Systems, 8 (2): 289–320, July 1990.Google Scholar
  14. [14]
    Brad A. Myers. Why are human-computer interfaces difficult to design and implement? Technical Report CMU-CS-93–183, School of Computer Science, Carnegie-Mellon University, July 1993.Google Scholar
  15. [15]
    Rob Noble and Colin Runciman. Functional languages and graphical user interfaces - a review and a case study. Technical Report 94–223, Department of Computer Science, University of York, February 1994.Google Scholar
  16. [16]
    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
  17. [17]
    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
  18. [18]
    Rob Pike. Acme: A user interface for programmers. In Proceedings of the Winter 1994 USENIX Conference, pages 223–234, San Francisco, 1994.Google Scholar
  19. [19]
    John H. Reppy. CML: A higher-order concurrent language. Proceedings of the ACM SIGPLAN’91 Conference on Programming Language Design and Implementation, pages 293–305, 1991.Google Scholar
  20. [20]
    Roger Took. Surface interaction: A paradigm and model for separating application and interface. In Proceedings of the CHI’90, pages 35–42, April 1990.Google Scholar
  21. [21]
    Michael Travers. Recursive interfaces for reactive objects. In Proceedings of CHI’94, pages 379–385, Boston, MA, April 24–28 1994.Google Scholar
  22. [22]
    Philip Wadler. The essence of functional programming. In Proceedings of the ACM SIG-PLAN 19th Annual Symposium on Principles of Programming Languages,January 1992. Invited talk.Google Scholar

Copyright information

© Springer-Verlag/Wien 1995

Authors and Affiliations

  • Sigbjørn Finne
    • 1
  • Simon Peyton Jones
    • 1
  1. 1.Department of Computing ScienceUniversity of GlasgowGlasgowUK

Personalised recommendations