+--!!! Ambiguity in local declarations
+
+module ShouldSucceed where
+
+type Cp a = a -> a -> Ordering
+
+m :: Eq a => Cp a -> [a] -> a
+m _ [x,y,z] = if x==y then x else z
+
+cpPairs :: Cp [j] -> (a,[j]) -> (a,[j]) -> Ordering
+cpPairs cp (_,p) (_,q) = cp p q
+
+mp :: (Eq i,Eq j) => Cp [j] -> [(i,[j])] -> (i,[j])
+mp cp dD =
+ let minInRow = m (cpPairs cp)
+ in minInRow dD
+
+{- GHC 3.02 reported
+
+ T.hs:24:
+ Ambiguous type variable(s)
+ `j' in the constraint `Eq (aYD, [j])'
+ arising from use of `m' at T.hs:24
+ In an equation for function `mp':
+ mp cp dD = let minInRow = m (cpPairs cp) in minInRow dD
+
+This was because the ambiguity test in tcSimplify didn't
+take account of the type variables free in the environment.
+
+It should compile fine.
+-}