Results 1 -
3 of
3
Concurrent Clean
, 1991
"... 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 ..."
Abstract
-
Cited by 59 (4 self)
- Add to MetaCart
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 parall...
Generating Efficient Code for Lazy Functional Languages
, 1991
"... In this paper we will discuss how a good code generator can be built for (lazy) functional languages. Starting from Concurrent Clean, an experimental lazy functional programming language, code is generated for an intermediate abstract machine: the ABC machine. In this first pass many well-known opti ..."
Abstract
-
Cited by 23 (5 self)
- Add to MetaCart
In this paper we will discuss how a good code generator can be built for (lazy) functional languages. Starting from Concurrent Clean, an experimental lazy functional programming language, code is generated for an intermediate abstract machine: the ABC machine. In this first pass many well-known optimisation techniques are included. However, we will also present some new ideas in this area, like the way in which strictness can be incorporated, and the implementation of higher order functions. In a second pass, the ABC code is translated to concrete target code for the Motorola MC680x0 processor. Again many optimisation methods appear to be applicable. Some of them (for example register allocation algorithms) are common for the implementation of other types of languages, but have to be adapted because of the specific properties of both source language and target machine. Other optimisations are specific for lazy functional languages, e.g. the implementation of higher order functions, eff...
Communication Issues Regarding Parallel . . .
- PROCEEDINGS OF THE FOURTH INTERNATIONAL WORKSHOP ON THE PARALLEL IMPLEMENTATION OF FUNCTIONAL LANGUAGES
, 1992
"... Efficient communication is the basis of an implementation of a parallel language on a distributed machine architecture. This article handles about the communication mechanism that is needed to support parallel graph rewriting in Concurrent Clean. The danger of deadlock is imminent at several levels ..."
Abstract
- Add to MetaCart
Efficient communication is the basis of an implementation of a parallel language on a distributed machine architecture. This article handles about the communication mechanism that is needed to support parallel graph rewriting in Concurrent Clean. The danger of deadlock is imminent at several levels of such a system. Communication problems and their solutions are closely related to memory management issues, garbage collection in particular. In fact the communication mechanism presented here is a global memory management system. It is part of a distributed runtime system that has been moulded to fit parallel graph rewriting as implemented in Concurrent Clean.

