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.
Preview
Unable to display preview. Download preview PDF.
References
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.
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.
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.
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.
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.
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.
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.
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.
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.
A Goldberg. Object-Oriented Programming Languages, pages 570–607. Addison-Wesley Publishing Company, 3rd edition, 1995.
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.
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.
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.
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.
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.
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.
M.J. Plasmeijer and M.C.J.D. van Eekelen. Functional Programming and Parallel Graph Rewriting. Addison-Wesley Publishing Company, 1993.
Achten P.M. Interactive Functional Programs — Models, Methods, and Implementation. PhD thesis, University of Nijmegen, 1996.
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.
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.
P. Wadler. Comprehending monads. In Proceedings of the ACM Conference on Lisp and Functional Programming, Nice, pages 61–78. ACM Press, 1990.
Author information
Authors and Affiliations
Editor information
Rights 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