Advertisement

Interactive functional objects in Clean

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

Abstract

The functional programming language Clean has a high level I/O system (version 0.8) in which complex yet efficient interactive programs can be created. In this paper we present its successor (version 1.0), the object I/O system. We consider some of the design considerations that have influenced the design of the new I/O system greatly. Key issues are compositionality, orthogonality, and extensibility. Apart from design, the object I/O system improves on its predecessor by two major contributions: programmers can introduce polymorphic local state at every (collection of) user interface component(s) and programmers can create interactive processes in a flexible way. All interface components can communicate with each other by sharing state but also using powerful message passing primitives in both synchronous, asynchronous, and uni- or bi-directional way. Using the message passing mechanism remote procedure calling can be added easily. The result is an object oriented I/O system. As in the previous system the uniqueness type system of Clean, offering the possibility to do destructive updates in a pure functional framework, plays a crucial role. Furthermore, the object I/O system makes extensive use of new type system facilities, namely type constructor classes and existential types.

Keywords

Interactive Process Talk Process Message Passing Interactive Program 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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [1]
    P.M. Achten and M.J Plasmeijer. Concurrent interactive processes in a pure functional language. In J.C van Vliet, editor, Proceedings Computing Science in the Netherlands (CSN'95), Jaarbeurs Utrecht, The Netherlands, Stichting Mathematisch Centrum, Amsterdam, pages 10–21, 27–28 November 1995.Google Scholar
  2. [2]
    P.M. Achten and M.J Plasmeijer. The ins and outs of clean i/o. Journal of Functional Programming, 5(1): 81–110, January 1995.zbMATHCrossRefGoogle Scholar
  3. [3]
    P.M. Achten, J.H.G. van Groningen, and M.J. Plasmeijer. High level specification of i/o in functional languages. In J. Launchbury and P. Sansom, editors, Proceedings Glasgow Workshop on Functional Programming (Ayr, Scotland), Workshops in Computing, pages 1–17. Springer-Verlag, 6–8 July 1993.Google Scholar
  4. [4]
    E. Barendsen and J.E.W. Smetsers. Uniqueness type inference. In M. Hermenegildo and S.D. Swierstra, editors, Proceedings of Seventh International Symposium on Programming Languages: Implementations, Logics and Programs, Utrecht, The Netherlands, number 982 in LNCS, pages 189–206. Springer-Verlag, 20–22 September 1995.Google Scholar
  5. [5]
    T. Brus, M.C.J.D. van Eekelen, M.O. van Leer, and M.J. Plasmeijer. Clean: A language for functional graph rewriting. In Kahn, G., editor, Proceedings of the Third International Conference on Functional Programming Languages and Computer Architecture, Portland, Oregon, USA, number 274 in LNCS, pages 364–384. Springer-Verlag, 1987.Google Scholar
  6. [6]
    M. Carlsson and Th. Hallgren. sc Fudgets — a graphical user interface in a lazy functional language. In Proceedings of Conference on Functional Programming Languages and Computer Architecture, Copenhagen, Denmark, pages 321–330. ACM Press, 9–11 June 1993.Google Scholar
  7. [7]
    K. Claessen, T. Vullinghs, and E. Meijer. Structuring graphical paradigms in tkgofer. In Proceedings of the ACM SIGPLAN International Conference of Functional Programming (ICFP'97), Amsterdam, The Netherlands, pages 251–262. ACM Press, 9–11 June 1997.Google Scholar
  8. [8]
    W.A.C.A.J. de Hoon, L.M.W.J. Rutten, and M.C.J.D. van Eekelen. Implementing a functional spreadsheet in clean. Journal of Functional Programming, 5(3): 383–414, July 1995.Google Scholar
  9. [9]
    S. Finne and S. Peyton Jones. Composing haggis. In Proceedings of the Fifth Eurographics Workshop on Programming Paradigms in Computer Graphics, Maastricht, The Netherlands. Springer-Verlag, September 1995.Google Scholar
  10. [10]
    A Goldberg. Object-Oriented Programming Languages, pages 570–607. Addison-Wesley Publishing Company, 3rd edition, 1995.Google Scholar
  11. [11]
    I. Holyer, N. Davies, and C. Dornan. The brisk project: Concurrent and distributed functional systems. In Proceedings Glasgow Workshop on Functional Programming, Ullapool, Scotland, 10–12 July 1995.Google Scholar
  12. [12]
    M.P. Jones. A system of constructor classes: overloading and implicit higherorder polymorphism. In Proceedings of Conference on Functional Programming Languages and Computer Architecture, Copenhagen, Denmark, pages 52–61. ACM Press, 9–11 June 1993.Google Scholar
  13. [13]
    J.C. Mitchell and G.D Plotkin. Abstract types have existential type. In Proceedings of the Twelfth Annual ACM Symposium on Principles of Programming Languages, pages 37–51, 1985.Google Scholar
  14. [14]
    R. Noble and C. Runciman. Functional languages and graphical user interfaces — a review and a case study. Technical report, Department of Computer Science, University of York, England, 3 February 1994.Google Scholar
  15. [15]
    R. Noble and C. Runciman. Gadgets: Lazy functional components for graphical user interfaces. In M. Hermenegildo and S.D. Swierstra, editors, Proceedings of Seventh International Symposium on Programming Languages: Implementations, Logics and Programs, Utrecht, The Netherlands, number 982 in LNCS, pages 321–340. Springer-Verlag, 20–22 September 1995.Google Scholar
  16. [16]
    E.G.J.M.H. Nöcker, J.E.W. Smetsers, M.C.J.D. van Eekelen, and M.J. Plasmeijer. Concurrent clean. In E.H.L. Aarts, J. van Leeuwen, and M. Rem, editors, Proceedings of Parallel Architectures and Languages Europe, June, Eindhoven, The Netherlands, number 506 in LNCS, pages 202–219. Springer-Verlag, 1991.Google Scholar
  17. [17]
    M.J. Plasmeijer and M.C.J.D. van Eekelen. Functional Programming and Parallel Graph Rewriting. Addison-Wesley Publishing Company, 1993.Google Scholar
  18. [18]
    Achten P.M. Interactive Functional Programs — Models, Methods, and Implementation. PhD thesis, University of Nijmegen, 1996.Google Scholar
  19. [19]
    E. Scholz, sc Pidgets — unifying pictures and widgets in a constraint-based framework for concurrent gui programming. In H. Kuchen and S.D. Swierstra, editors, Proceedings of eighth International Symposium on Programming Languages: Implementations, Logics, and Programs, Aachen, Germany, number 1140 in LNCS, pages 363–377. Springer-Verlag, September 1996.Google Scholar
  20. [20]
    J.E.W. Smetsers, E. Barendsen, M.C.J.D. van Eekelen, and M.J. Plasmeijer. Guaranteeing safe destructive updates through a type system with uniqueness information for graphs. In H.J. Schneider and H. Ehrig, editors, Proceedings Workshop Graph Transformations in Computer Science, Dagstuhl Castle, Germany, number 776 in LNCS, pages 358–379. Springer-Verlag, 4–8 January 1993.Google Scholar
  21. [21]
    P. Wadler. Comprehending monads. In Proceedings of the ACM Conference on Lisp and Functional Programming, Nice, pages 61–78. ACM Press, 1990.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1998

Authors and Affiliations

  • Peter Achten
    • 1
  • Rinus Plasmeijer
    • 1
  1. 1.Computing Science InstituteUniversity of NijmegenED, NijmegenThe Netherlands

Personalised recommendations