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

Reply via email to