have been unified down so there won't be any kind variables, but we
can't express that in the current typechecker framework.
-So we compromise and use unsafeInterleaveSST.
+So we compromise and use unsafeInterleaveIO.
We throw away any error messages!
G the environment
T the type of the RHS
- C the constraints fromm that RHS
+ C the constraints from that RHS
The game is to figure out
Notice that we union before calling oclose. Here's an example:
- class J a b c | a,b -> c
+ class J a b c | a b -> c
fv(G) = {a}
Is this ambiguous?
- forall b,c. (J a b c) => b -> b
+ forall b c. (J a b c) => b -> b
Only if we union {a} from G with {b} from T before using oclose,
do we see that c is fixed.