[Improves the error message shown when a monomorphic pattern has a polymorphic type that cannot be defaulted. 
jcpetruzza@gmail.com**20120211045931
 Ignore-this: efd70b7535eb0444148aabdbe96ed0b9
 
 The previous error message seemed more like an internal error ("withDefaults.ambiguity: ...")
] hunk ./src/FrontEnd/Tc/Class.hs 154
-    (rs',sub) <- genDefaults h (fs `Set.union` gs) rs
+    let (rs',sub) = genDefaults h (fs `Set.union` gs) rs
hunk ./src/FrontEnd/Tc/Class.hs 163
-withDefaults :: Monad m
-             => ClassHierarchy
-             -> Set.Set MetaVar -- ^ Variables to be considered known
-             -> [Pred]          -- ^ Predicates to consider
-             -> m [(MetaVar, [Pred], Type)]
-             -- ^ List of (defaulted meta var, predicates involving it, type defaulted to)
-withDefaults h vs ps
-  | any null tss = fail $ "withDefaults.ambiguity: " ++ (pprint ps)  ++ pprint (Set.toList vs) -- ++ show ps
---  | otherwise = fail $ "Zambiguity: " ++ (render $ pprint ps) ++  show (ps,ps',ams)
-  | otherwise    = return $ [ (v,qs,head ts) | (v,qs,ts) <- ams ]
-    where ams = ambig h vs ps
-          tss = [ ts | (v,qs,ts) <- ams ]
-
hunk ./src/FrontEnd/Tc/Class.hs 164
-genDefaults :: Monad m
-            => ClassHierarchy
+genDefaults :: ClassHierarchy
hunk ./src/FrontEnd/Tc/Class.hs 167
-            -> m ([Pred], [(MetaVar,Type)])
-genDefaults h vs ps = do
-    ams <- withDefaults h vs ps
-    let ps' = [ p | (v,qs,ts) <- ams, p<-qs ]
-        vs  = [ (v,t)  | (v,qs,t) <- ams ]
-    return (ps \\ ps',  vs)
+            -> ([Pred], [(MetaVar,Type)])
+genDefaults h vs ps = (ps \\ ps',  vs')
+ where ams = [ (v,qs,t) | (v,qs,t:ts) <- ambig h vs ps ]
+       ps' = [ p | (v,qs,ts) <- ams, p <-qs ]
+       vs' = [ (v,t)  | (v,qs,t) <- ams ]