
On 2015-02-10 18:01, Kim-Ee Yeoh wrote:
On Tue, Feb 10, 2015 at 11:14 PM, Frerich Raabe
wrote: I noticed that a similiar case exists with
f :: Bool -> Bool f x | x = True | not x = False
[..]
Now you could point out that "Ah, but look at the definition of not. It could inline, simplify, et voila, obtain
f True = True f False = False
and hence pattern-matching is complete."
Therein lies the rub. All that inlining and simplification boils down to evaluating the program _in_ the compiler, so if your program diverges so would the compiler, which wouldn't be a happy thing.
Ah, true. The compiler would need to evaluate the program, I didn't realize that. But: what do you mean by 'if your program diverges' -- diverges from what? -- Frerich Raabe - raabe@froglogic.com www.froglogic.com - Multi-Platform GUI Testing