A process semantics for functional programming

Abstract The semantics of lazy functional programming languages is usually presented in two different ways: a semantics based on trees which is used to reason about a program; and a semantics based on graphs which is used to implement a program. The link between these semantics is often unclear. We present a process semantics for functional programming which has a number of interesting properties. Firstly it is structured in such a way that the relationship between the tree and graph semantics is clear. Secondly, it captures the main requirements of functional programming by incorporating laziness, cycles and strictness. Lastly, there is a simple formal correspondence between this semantics and other operational presentations.