Marc,
| Could somebody tell me how to disambiguate the following program
|
| > module Tmp( g ) where
| > data A p q = A
| > g :: (Num p,Ord q) => (A p q) -> Bool
| > g A = g A
I don't understand this. "g" always returns bottom.
| I could do something like
|
| > g a@A = a
That's different!
g A = A
would be OK, except that now g returns a value of type (AB r s),
not a Bool.
| But that won't help me very much in the case of
|
| > data AB p q = A
| > B p q
| > g :: (Num p,Ord q) => (AB p q) -> Bool
| > g (B _ _) = A
That should be OK too, except that g doesn't return a Bool.
Simon