CLEAN: A language for functional graph writing

Clean is an experimental language for specifying functional computations in terms of graph rewriting. It is based on an extension of Term Rewriting Systems (TRS) in which the terms are replaced by graphs. Such a Graph Rewriting System (GRS) consists of a, possibly cyclic, directed graph, called the data graph and graph rewrite rules which specify how this data graph may be rewritten. Clean is designed to provide a firm base for functional programming. In particular, Clean is suitable as an intermediate language between functional languages and (parallel) target machine architectures. A sequential implementation of Clean on a conventional machine is described and its performance is compared with other systems. The results show that Clean can be efficiently implemented.

[1]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[2]  Wim Bronnenberg,et al.  DOOM: A Decentralized Object-Oriented Machine , 1987, IEEE Micro.

[3]  Paul Hudak,et al.  Para-functional programming: a paradigm for programming multiprocessor systems , 1986, POPL '86.

[4]  D. A. Turner,et al.  A new implementation technique for applicative languages , 1979, Softw. Pract. Exp..

[5]  Michael J. O'Donnell,et al.  Equational Logic as a Programming Language. , 1987 .

[6]  Thomas Johnsson,et al.  Efficient compilation of lazy evaluation , 1984, SIGPLAN '84.

[7]  Marko C. J. D. van Eekelen,et al.  Term Graph Rewriting , 1987, PARLE.

[8]  Pierre-Louis Curien,et al.  The Categorical Abstract Machine , 1987, Sci. Comput. Program..

[9]  José Meseguer,et al.  Principles of OBJ2 , 1985, POPL.

[10]  Marko C. J. D. van Eekelen,et al.  Specification of reduction strategies in term rewriting systems , 1986, Graph Reduction.

[11]  J. R. Kennaway,et al.  DACTL: A computational model and compiler target language based on graph reduction , 1987 .

[12]  W. G. Vree,et al.  A load distribution network for a multi processor reduction machine , 1986 .

[13]  Hendrik Pieter Barendregt,et al.  Functional Programming and the Language TALE , 1986, Current Trends in Concurrency.

[14]  Doug DeGroot,et al.  Logic programming - functions, relations and equations , 1986 .

[15]  Willem G. Vree,et al.  The Dutch parallel reduction machine project , 1987, Future Gener. Comput. Syst..

[16]  Marko C. J. D. van Eekelen,et al.  Towards an Intermediate Language based on Graph Rewriting , 1987, PARLE.

[17]  Simon L. Peyton Jones,et al.  FLIC—a functional language intermediate code , 1988, SIGP.