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.