An Operational Semantics for Parallel Lazy Evaluation

Abstract

Parallel (lazy) functional programs must describe both computation and coordination, i.e., what to compute and how to arrange the computation in parallel. The formal manipulation of the behaviours of such programs requires a semantics which accurately captures lazy evaluation, and the dependence of execution on the availability of (physical) resources. In this paper we present a lockstep semantics as a first step towards this goal which, we hope, will allow us to reason about the coordination in a lazy setting. Version History Version 0.44(110998): From a comment by David Crowe, changed normalisation so that use of new closure is correctly noted in seq and par Version 0.43: Included Clem's relationship to other work section. Otherwise, just a minor polish for IFL'98 Version 0.42: Considered, but left unimplemented, Clem's tri-partite heap system. Random, speculative evaluation of dead threads remains a problem of the system. Partitioned rules into sequential and parallel rules. Hop..

    Similar works