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.
KeywordsUser Interface Interactive Behaviour Interactive Component Functional Programming Functional Language
Unable to display preview. Download preview PDF.
- Adobe Systems Inc. PostScript language reference manual. Addison Wesley, second edition, 1990.Google Scholar
- 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
- 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
- Sigbjorn Finne and Simon Peyton Jones. Pictures: A simple structured graphics model. In Glasgow Functional Programming Workshop, Ullapool, July 1995.Google Scholar
- Emden W. Gansner and John H. Reppy. eXene. In Proceedings of the 1991 CMU Workshop on SML, October 31 1991.Google Scholar
- 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
- Paul Hudak et al. Report on the programming language haskell version 1.2. ACMSIGPLAN Notices, 27 (5), May 1992.Google Scholar
- 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
- 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
- Brad A. Myers. A new model for handling input. ACM Transactions on Information Systems, 8 (2): 289–320, July 1990.Google Scholar
- 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
- 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
- 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
- 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
- Rob Pike. Acme: A user interface for programmers. In Proceedings of the Winter 1994 USENIX Conference, pages 223–234, San Francisco, 1994.Google Scholar
- 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
- 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
- Michael Travers. Recursive interfaces for reactive objects. In Proceedings of CHI’94, pages 379–385, Boston, MA, April 24–28 1994.Google Scholar
- 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