The Implementation of Interactive Local State Transition Systems in Clean

  • Peter Achten
  • Rinus Plasmeijer
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1868)


The functional programming language Clean offers an extensive library, the object I/O library, to programmers to create interactive applications that use Graphical User Interfaces (GUI). Programs are constructed by composition of interactive objects. Interactive objects share state. To support modular programming it is also possible to provide objects with local state. Hierarchies of stateful objects are defined by means of algebraic specifications. Good use is made of the fact that Clean is a strongly typed language. In this paper we show how the evaluation of interactive objects is implemented in the object I/O library. The evaluation can be handled elegantly using lazy evaluation.


Graphical User Interface Interactive Object Component Object Type Constructor Integrate Development Environment 
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.
    Achten, P.M., van Groningen, J.H.G., Plasmeijer, M.J.: High Level Specification of I/O in Functional Languages. In: Launchbury, J., Sansom, P. (eds.) Proceedings Glasgow Workshop on Functional Programming, Workshops in Computing, Ayr, Scotland, July 6-8, pp. 1–17. Springer, Berlin (1992)Google Scholar
  2. 2.
    Achten, P.M., Plasmeijer, M.J.: The ins and outs of Clean I/O. Journal of Functional Programming 5(1), 81–110 (1995)zbMATHCrossRefGoogle Scholar
  3. 3.
    Achten, P.M., Plasmeijer, M.J.: Interactive Functional Objects in Clean. In: Clack, C., Hammond, K., Davie, T. (eds.) IFL 1997. LNCS, vol. 1467, pp. 304–321. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  4. 4.
    Achten, P.M., Wierich, M.: A Tutorial to the Clean Object I/O Library - version 1.1. Internal Report, Department of Functional Programming, University of Nijmegen, The Netherlands (1999), Available on Internet:
  5. 5.
    Barendsen, E., Smetsers, J.E.W.: Uniqueness Type Inference. In: [10], pp. 189–206Google Scholar
  6. 6.
    Bjørner, D., Broy, M., Pottosin, I.V. (eds.): PSI 1996. LNCS, vol. 1181. Springer, Heidelberg (1996)Google Scholar
  7. 7.
    Brus, T., van Eekelen, M.C.J.D., Leer, M.O., Plasmeijer, M.J.: Clean: A Language for Functional Graph Rewriting. In: Kahn, G. (ed.) FPCA 1987. LNCS, vol. 274, pp. 364–384. Springer, Heidelberg (1987)Google Scholar
  8. 8.
    Carlsson, M., Hallgren, T.: FuDGETS - A Graphical User Interface in a Lazy Functional Language. In: Proceedings of Conference on Functional Programming Languages and Computer Architecture, Copenhagen, Denmark, June 9-11, pp. 321–330. ACM Press, New York (1993)CrossRefGoogle Scholar
  9. 9.
    Frauenstein, T., Grieskamp, W., Pepper, P., Südholt.: Communicating Functional Agents and Their Application to Graphical User Interfaces. In: [6], pp. 386–397Google Scholar
  10. 10.
    Hermenegildo, M., Swierstra, S.D. (eds.): PLILP 1995. LNCS, vol. 982. Springer, Heidelberg (1995)Google Scholar
  11. 11.
    Jones, M.P.: A system of constructor classes: overloading and implicit higher-order polymorphism. In: Proceedings of Conference on Functional Programming Languages and Computer Architecture, Copenhagen, Denmark, June 9-11, pp. 52–61. ACM Press, New York (1993)Google Scholar
  12. 12.
    Noble, R., Runciman, C.: Gadgets: Lazy Functional Components for Graphical User Interfaces. In: [10], pp. 321-340Google Scholar
  13. 13.
    Nöcker, E.G.J.M.H., Smetsers, J.E.W., van Eekelen, M.C.J.D., Plasmeijer, M.J.: Concurrent Clean. In: Aarts, E.H.L., van Leeuwen, J., Rem, M. (eds.) PARLE 1991. LNCS, vol. 506, pp. 202–219. Springer, Heidelberg (1991)Google Scholar
  14. 14.
    Plasmeijer, M.J., van Eekelen, M.C.J.D.: Functional Programming and Parallel Graph Rewriting. Addison-Wesley Publishing Company, Reading (1993)zbMATHGoogle Scholar
  15. 15.
    Scholz, E.: PlDGETS - Unifying Pictures and Widgets in a Constraint-Based Framework for Concurrent GUI Programming. In: Kuchen, H., Swierstra, S.D. (eds.) PLILP 1996. LNCS, vol. 1140, pp. 363–377. Springer, Heidelberg (1996)Google Scholar
  16. 16.
    Smetsers, J.E.W., Barendsen, E., van Eekelen, M.C.J.D., Plasmeijer, M.J.: Guaranteeing Safe Destructive Updates through a Type System with Uniqueness Information for Graphs. In: Ehrig, H., Schneider, H.-J. (eds.) Dagstuhl Seminar 1993. LNCS, vol. 776, pp. 358–379. Springer, Heidelberg (1994)Google Scholar
  17. 17.
    Vullinghs, T., Schulte, W., Schwinn, T.: The Design of a Functional GUI Library Using Constructor Classes. In: [6], pp. 398–408Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Peter Achten
    • 1
  • Rinus Plasmeijer
    • 1
  1. 1.Computing Science InstituteUniversity of NijmegenNijmegenThe Netherlands

Personalised recommendations