Gadgets: Lazy functional components for graphical user interfaces

  • Rob Noble
  • Colin Runciman
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 982)


We describe a process extension to a lazy functional programming system, intended for applications with graphical user interfaces (GUIs). In the extended language, dynamically-created processes communicate by asynchronous message passing. We illustrate the use of the language, including as an extended example a simple board game in which squares are implemented as concurrent processes. We also describe a window manager, itself implemented in the extended functional language.


functional language processes concurrency window manager Gofer 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [AP93]
    P. Achten and R. Plasmeijer. The Beauty and the Beast, 93.Google Scholar
  2. [AvGP92]
    P. M. Achten, J. H. G. van Gronigen, and M. J. Plasmeijer. High level specification of I/O in functional languages. In Fifth Annual Glasgow Workshop of Functional Programming, Ayr 6th–8th July 1992., July 1992.Google Scholar
  3. [AWV93]
    J. Armstrong, M. Williams, and R. Virding. Concurrent Programming in Erlang. Prentice-Hall, 1993.Google Scholar
  4. [CH93]
    M. Carlsson and T. Hallgren. Fudgets — a graphical user interface in a lazy functional language. In Functional Programming and Computer Architectures, pages 321–330. ACM Press, June 1993.Google Scholar
  5. [FJ95]
    Sigbjørn Finne and Simon Peyton Jones. Composing Haggis. In Proceedings of the Fifth Eurographics Workshop on Programming Paradigms in Computer Graphics, Maastrict, Netherlands, September 1995.Google Scholar
  6. [GR93]
    Emden R. Gansner and John H. Reppy. A Multithreaded Higher-order User Interface Toolkit. User Interface Software: Software Trends, 1:61–80, 1993.Google Scholar
  7. [HHPJW94]
    Cordelia V. Hall, Kevin Hammond, Simon L. Peyton Jones, and Philip Wadler. Type classes in haskell. In European Symposium on Programming, volume 788 of LNCS. Springer-Verlag, April 94.Google Scholar
  8. [HS88]
    P. Hudak and R. S. Sundaresh. On the expressiveness of purely functional I/O systems. Technical report, Yale University Research Report YALEU/DCS/RR-665, Dept. of Computer Science, December 1988.Google Scholar
  9. [JH93]
    Mark Jones and Paul Hudak. Implicit and explicit parallel programming in haskell. Technical Report YALEU/DCS/RR-982, Department of Computer Science, Yale University, Aug 93.Google Scholar
  10. [Jon95]
    Simon Peyton Jones. Concurrent haskell. In Haskell Workshop, La Jolla, June 1995.Google Scholar
  11. [Kar81]
    K. Karlsson. Nebula: A functional operating system. Technical report, Laboratory for Programming Methodology, Chalmers University of Technology and University of Goteb, 1981.Google Scholar
  12. [LPJ94]
    J. Launchbury and S. Peyton Jones. Lazy functional state threads. In Programming Languages Design and Implementation, Orlando, 1994. ACM Press.Google Scholar
  13. [NR94]
    Rob Noble and Colin Runciman. Functional languages and graphical user interfaces — a review and a case study. Technical Report YCS-94-223, Department of Computer Science, University of York, 1994.Google Scholar
  14. [PJW93]
    Simon L. Peyton Jones and Philip Wadler. Imperative functional programming. In Principles of Programming Languages, Jan 93.Google Scholar
  15. [PRT93]
    Benjamin C. Pierce, Didier Rémy, and David N. Turner. A typed higher-order programming language based on the pi-calculus. In Workshop on Type Theory and its Application to Computer Systems, Kyoto University, July 1993.Google Scholar
  16. [RS93]
    A. Reid and S. Singh. Implementing Fudgets with standard widget sets. In Glasgow functional programming workshop, pages 222–235. Springer-Verlag, 93.Google Scholar
  17. [Sin92]
    Duncan C. Sinclair. Graphical user interfaces for Haskell. In J. Launchbury and Patrick M. Samson, editors, Glasgow functional programming workshop. Springer-Verlag, 1992.Google Scholar
  18. [WR95]
    Malcolm Wallace and Colin Runciman. Extending a functional programming system for embedded applications. Software Practice & Experience, 25(1):73–96, January 1995.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • Rob Noble
    • 1
  • Colin Runciman
    • 1
  1. 1.Dept. of Computer ScienceUniversity of YorkUK

Personalised recommendations