Abstract
Concurrent Clean is an experimental, lazy, higher-order parallel functional programming language based on term graph rewriting. An important difference with other languages is that in Clean graphs are manipulated and not terms. This can be used by the programmer to control communication and sharing of computation. Cyclic structures can be defined. Concurrent Clean furthermore allows to control the (parallel) order of evaluation to make efficient evaluation possible. With help of sequential annotations the default lazy evaluation can be locally changed into eager evaluation. The language enables the definition of partially strict data structures which make a whole new class of algorithms feasible in a functional language. A powerful and fast strictness analyser is incorporated in the system. The quality of the code generated by the Clean compiler has been greatly improved such that it is one of the best code generators for a lazy functional language. Two very powerful parallel annotations enable the programmer to define concurrent functional programs with arbitrary process topologies. Concurrent Clean is set up in such a way that the efficiency achieved for the sequential case can largely be maintained for a parallel implementation on loosely coupled parallel machine architectures.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Augustsson L., Johnsson T. (1989), ‘The Chalmers Lazy-ML Compiler’, The Computer Journal, Vol. 32, No. 2 1989.
Barendregt, H.P., Eekelen, M.C.J.D. van, Glauert, J.R.W., Kennaway, J.R., Plasmeijer, M.J., Sleep, M.R., (1987a), M.R., (1987a), ‘Term Graph Reduction’, Proceedings of Parallel Architectures and Languages Europe (PARLE), part II, Eindhoven, The Netherlands, LNCS Vol. 259, pp. 141–158, June 1987.
Barendregt, H.P., Eekelen, M.C.J.D. van, Glauert, J.R.W., Kennaway, J.R., Plasmeijer, M.J., Sleep, M.R., (1987b). Towards an Intermediate Language based on Graph Rewriting. Proceedings of Parallel Architectures and Languages Europe (PARLE), part II, Eindhoven, The Netherlands. Springer Lec. Notes Comp. Sci. 259, 159–175.
Barendregt, H.P., Eekelen, M.C.J.D. van, Plasmeijer, MJ., Hartel, P.H., Hertzberger, L.O., Vree, W.G., (1987), ‘The Dutch Parallel Reduction Machine Project’, Intern. Conf. on Frontiers in Computing, Amsterdam, Dec. 1987.
Barendregt, H.P., Eekelen, M.CJ.D. van, Glauert, J.R.W., Kennaway, J.R., Plasmeijer, M.J., Sleep, M.R. (1988). ‘Towards an Intermediate Language based on Graph Rewriting’. Revised version. Journal of Parallel Computing 9 with selected papers of the conference on Parallel Architectures and Languages Europe (PARLE), Eindhoven, The Netherlands. North-Holland 163–177.
Brus, T., Eekelen, M.C.J.D. van, Leer, M. van, Plasmeijer, M.J. (1987). Clean–A Language for Functional Graph Rewriting. Proc. of the Third International Conference on Functional Programming Languages and Computer Architecture (FPCA ‘87), Portland, Oregon, USA, Springer Lec. Notes on Comp.Sci. 274, 364–384.
Burstall, R.M., MacQueen, D.B., and Sanella, D.T. (1980). Hope: An Experimental Applicative Language. Proceedings of the 1980 LISP Conference, 136–143.
Eekelen, M.C.J.D. van, (1988). Parallel Graph Rewriting, Some Contributions to its Theory, its Implementation and its Application. University of Nijmegen. Ph.D. Thesis.
Eekelen, M.C.J.D. van, Plasmeijer, M.J., Smetsers, J.E.W., (1989b). Communicating Functional Processes. University of Nijmegen. Technical Report 89–3.
Eekelen M.C.J.D. van, Nöcker E.G.J.M.H., Plasmeijer M.J., Smetsers J.E.W., (1990). ‘Concurrent Clean, version 0.6’, Technical Report 90–21, University of Nijmegen, December 1990.
Eekelen, M.C.J.D. van, Plasmeijer, M.J., Smetsers, J.E.W., (1991). Parallel Graph Rewriting on Loosely Coupled Machine Architectures’ proceedings of the workshop on CTRS’90. Montreal Canada. To appear in 1991.
Eekelen, M.C.J.D. van, Plasmeijer, M.J., (1990). ‘Concurrent Functional Programming’. Proceedings of the conference on Unix zhaohuan Parallelism, NLUUG, may 1990, pp 75–98.
Glauert, J.R.W., Kennaway, J.R., Sleep, M.R., (1987), ‘DACTL: A Computational Model and Compiler Target Language Based on Graph Reduction’, ICL Technical Journal, May 1987.
Groningen J. van. (1990). ‘Implementing the ABC-machine on M680x0 based architectures’. Master Thesis, University of Nijmegen, November 1990.
Johnsson Th. (1987). ‘Compiling Lazy Functional Programming languages’. Dissertation at Chalmers University, Götenborg, Sweden. ISBN 91–7032–280–5.
Kesseler M., (1990), ‘Concurrent Clean on Transputers’, Master Thesis, University of Nijmegen, November 1990.
Koopman, P.W.M., Nöcker, E.G.J.M.H. (1988), ‘Compiling functional languages to Term Graph Rewriting Systems’. Technical Report 88–1, University of Nijmegen.
Koopman P.W.M., Eekelen M.C.J.D. van, Nöcker E.G.J.M.H., Smetsers S., Plasmeijer M.J. (1990). ‘The ABC-machine: A Sequential Stack-based Abstract Machine For Graph Rewriting’. Technical Report, University of Nijmegen.
McBurney, D, Sleep, R. (1990), ‘Concurrent Clean on Zapp’, Proceedings of the Second International Workshop on Implementations of Functional Languages on Distributed Architectures, University of Nijmegen, November 1990.
Milner, R.A. (1978). Theory of Type Polymorphism in Programming. Journal of Computer and System Sciences, Vol. 17, no. 3, 348–375.
Mycroft, A. (1984). Polymorphic type schemes and recursive definitions. Proc. of the 6th Int. Conf. on Programming, Springer Lec. Notes Comp. Sci. 167, 217–228.
Nöcker E.GJ.M.H., (1989). ‘The PABC Simulator, v0.5. Implementation Manual’. University of Nijmegen, Technical Report 89–19.
Nöcker E.G.J.M.H. (1990). ‘Strictness Analysis based on Abstract Reduction’, in Proceedings of the Second International Workshop on Implementation of Functional Languages on Parallel Architectures, pp. 297–321, Technical Report no. 90–16, October 1990, University of Nijmegen.
Nöcker E.GJ.M.H., Smetsers J.E.W., (1990). Partially Strict Data Types’, Proceedings of the Second International Workshop on Implementations of Functional Languages on Distributed Architectures, University of Nijmegen, November 1990.
Peyton Jones S.L, Salkild J. (1989). ‘The Spineless Tagless G-machine’. Proceedings of the Conference on Functional Programming Languages and Computer Architectures, Addison Wesley, pp 184–201.
Plasmeijer, M.J., Eekelen, M.C.J.D. van (1989). Functional Programming and Parallel Graph Rewriting. Lecture notes, University of Nijmegen, to appear at Addison Wesley 1991.
Smetsers J.E.W., (1989). ‘Compiling Clean to Abstract ABC-Machine Code’. University of Nijmegen, Technical Report 89–20.
Smetsers, J.E.W., Eekelen, M.C.J.D. van, Plasmeijer, M.J., (1991). Operational semantics of Concurrent Clean. University of Nijmegen. Technical Report in preparation.
Turner D.A. (1985), ‘Miranda: A non-strict functional language with polymorphic types’. Proc. of the conference on Functional Programming Languages and Computer Architecture, Springer Lec. Notes Comp. Sci. 201, 1–16.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1991 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Nöcker, E.G.J.M.H., Smetsers, J.E.W., van Eekelen, M.C.J.D., Plasmeijer, M.J. (1991). Concurrent Clean. In: Aarts, E.H.L., van Leeuwen, J., Rem, M. (eds) Parle ’91 Parallel Architectures and Languages Europe. Lecture Notes in Computer Science, vol 505. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-25209-3_39
Download citation
DOI: https://doi.org/10.1007/978-3-662-25209-3_39
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-662-23206-4
Online ISBN: 978-3-662-25209-3
eBook Packages: Springer Book Archive