Programming Paradigms in Graphics pp 85-101 | Cite as
Composing Haggis
Abstract
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.
Keywords
User Interface Interactive Behaviour Interactive Component Functional Programming Functional LanguagePreview
Unable to display preview. Download preview PDF.
References
- [1]Adobe Systems Inc. PostScript language reference manual. Addison Wesley, second edition, 1990.Google Scholar
- [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]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]Sigbjorn Finne and Simon Peyton Jones. Pictures: A simple structured graphics model. In Glasgow Functional Programming Workshop, Ullapool, July 1995.Google Scholar
- [5]Emden W. Gansner and John H. Reppy. eXene. In Proceedings of the 1991 CMU Workshop on SML, October 31 1991.Google Scholar
- [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]Peter Henderson. Functional geometry. In ACM Symposium on LISP and Functional Programming, pages 179–187, 1982.CrossRefGoogle Scholar
- [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]Paul Hudak et al. Report on the programming language haskell version 1.2. ACMSIGPLAN Notices, 27 (5), May 1992.Google Scholar
- [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]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]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]Brad A. Myers. A new model for handling input. ACM Transactions on Information Systems, 8 (2): 289–320, July 1990.Google Scholar
- [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]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]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]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]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]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]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]Michael Travers. Recursive interfaces for reactive objects. In Proceedings of CHI’94, pages 379–385, Boston, MA, April 24–28 1994.Google Scholar
- [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