Skip to main content

Interactive functional objects in Clean

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((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.

Supported by STW under grant NIF33.3059: The Concurrent Clean System.

This is a preview of subscription content, log in via an institution.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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. 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.

    Article  MATH  Google Scholar 

  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. 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. 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. 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. 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. 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. 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. A Goldberg. Object-Oriented Programming Languages, pages 570–607. Addison-Wesley Publishing Company, 3rd edition, 1995.

    Google Scholar 

  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. 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. 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. 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. 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. 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. M.J. Plasmeijer and M.C.J.D. van Eekelen. Functional Programming and Parallel Graph Rewriting. Addison-Wesley Publishing Company, 1993.

    Google Scholar 

  18. Achten P.M. Interactive Functional Programs — Models, Methods, and Implementation. PhD thesis, University of Nijmegen, 1996.

    Google Scholar 

  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. 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. P. Wadler. Comprehending monads. In Proceedings of the ACM Conference on Lisp and Functional Programming, Nice, pages 61–78. ACM Press, 1990.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Chris Clack Kevin Hammond Tony Davie

Rights and permissions

Reprints and permissions

Copyright information

© 1998 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Achten, P., Plasmeijer, R. (1998). Interactive functional objects in Clean. In: Clack, C., Hammond, K., Davie, T. (eds) Implementation of Functional Languages. IFL 1997. Lecture Notes in Computer Science, vol 1467. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0055438

Download citation

  • DOI: https://doi.org/10.1007/BFb0055438

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-64849-9

  • Online ISBN: 978-3-540-68528-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics