Paul Hudak notes:
| Similarly, given an equation:
|
| f (Foo x y) = y
|
|
| If Foo is strict in its first component then I can't use this equation
| at will; I need to qualify it:
|
| f (Foo x y) = y if x /= _|_
|
|
| (And again, the first equation actually comes with an extra implicit
| constraint: it only holds if we know all the other equations for f
| that lexically preceed it don't hold.) The same situation arises, of
| course, if we can define strict functions.
Actually, the status quo is worst then this. Consider
> f [] = 5
> f x = 5
The value of f y is clearly 5 if the first equation holds, and is 5 if the first
equation does not hold. So what is the value of f bottom?
Warren Burton
Simon Fraser University