
On 22/12/2006, at 7:14 PM, Simon Peyton-Jones wrote:
| I take it, then, that the answer to the question of "under what | circumstances does the (error -> non-termination) transformation | happen?" is that GHC can choose among different bottoms that are | present in the program. It can't, however, willy-nilly convert my | error calls to bottom. (Or something more precise along the same | lines.)
Yes, that's right, good point.
I've been following this thread with interest. But now I don't understand what the conclusion is. I thought Simon's earlier example showed that the semantics of GHC does not distinguish between an infinite loop and a call to error. Otherwise the strictness optimisation would be unsound. Mike, what do you mean by "willy nilly convert my error calls to bottom"? Cheers, Bernie.