graphs that support non-elementary computation in a constant number of parallel reductions . So far, sharing graphs have been used to represent pure A-terms only. Chapter 11 extend s the technique to a richer functional programming language, including primitive data types, contro l structures, and recursion . To do this, the authors make a connection with Lafont's Interactio n Nets. The final chapter is devoted to the Bologna Optimal Higher-order Machine (BOHM), a prototype implementation of a core functional language using optimal reduction . It describes the source language, all the reductions and how they are implemented, and some other implementation details , such as garbage collection . Graph sizes are given (with and without garbage collection), but ru n times for `typical' programs are omitted . The authors claim, however, that BOHM (which is jus t a prototype) is about an order of magnitude slower than call-by-value implementations (SML o r Caml) and only slightly slower than lazy implementations (Haskell) . Considering the worst-case complexity of optimal reduction, this is not an unfavorable result! But the key question remains : is optimal reduction worthwhile in a real implementation ? The authors point out that existing functional programs
/lp/association-for-computing-machinery/book-review-indiscrete-thoughts-by-gina-carlo-rota-birkhauser-1996-BjHcDtiYB4