The lambda calculus forms without any question *the* theoretical backbone
of functional programming languages. For the design and implementation
of the lazy functional language Concurrent Clean we have used a related
computational model: Term Graph Rewriting Systems (TGRS's). This paper wraps
up our main conclusions after 10 years of experience with graph
rewriting semantics for functional programming languages. TGRS's are not a
direct extension of the lambda calculus, so one sometimes has to re-establish
known theoretical results. But TGRS's are that much closer to the world of
functional programming that its use has been proven to be very worthwhile. In
TGRS's functions have names, there are constants, pattern matching and one can
choose to either share expressions or copy them.
Graph reduction very accurately models the essential behaviour of most
implementations of functional languages and therefore it forms a good base
for reasoning about reduction properties as well as the time and space
consumption of functional applications.
With uniqueness typing important
information can be derived for efficient implementation and for purely
functional interfacing with imperative programs.