Re: Why Prolog and CBV?
Date: Fri, 15 Nov 91 09:52:04 EST
In reply to Phil Wadler's note, it's probably worth mentioning that Reynolds'
language Forsythe takes the call-by-name evaluation strategy for procedures,
yet it is fundamentally an imperative language with first- class
continuations. So the situation is not so clear-cut as Phil suggests: the
choice of cbv or cbn is not determined by whether or not one wishes to program
with control or store effects. What does seem to be the case is that if one
integrates effects into the language in roughly the style of ML (eg, with ref
types), then cbv is essentially forced on you for reasons of determinacy. But
Forsythe does not take this approach, with the result that unrestricted beta
reduction is always a valid equivalence between programs, yet the language is
fundamentally imperative. The "trick" is in the overall structure of the
language, which in Forsythe means making careful separations between the
commands of the underlying imperative language and the phrases of the
procedural "superstructure". Bob Tennant's new book contains a nice
discussion of this point.