[Documentation in FrontEnd.Tc.Class
Samuel Bronson <naesten@gmail.com>**20090215050529
 Ignore-this: f11b6d008a47785f762c9fd7d7af0862
 I still haven't quite figured out splitReduce, but hopefully I at
 least haven't made any mistakes ;-).
] hunk ./FrontEnd/Tc/Class.hs 57
-splitPreds :: Monad m => ClassHierarchy -> Set.Set MetaVar -> Preds -> m (Preds, Preds)
+splitPreds :: Monad m
+           => ClassHierarchy
+           -> Set.Set MetaVar
+           -> Preds
+           -> m (Preds, Preds)
hunk ./FrontEnd/Tc/Class.hs 150
--- FIXME: Use sets.
-splitReduce :: Set.Set MetaVar -> Set.Set MetaVar -> [Pred] -> Tc ([MetaVar],[Pred], [Pred])
+splitReduce :: Set.Set MetaVar -- ^ Meta vars from the environment
+            -> Set.Set MetaVar -- ???
+            -> [Pred]          -- ^ Relevant predicates
+            -> Tc ([MetaVar], [Pred], [Pred]) -- ^ (retained ??? meta-vars, untouched predicates, altered predicates)
hunk ./FrontEnd/Tc/Class.hs 166
-    return (Set.toList gs List.\\ map fst sub, ds,rs')
+    return (Set.toList gs List.\\ map fst sub, ds, rs')
hunk ./FrontEnd/Tc/Class.hs 168
-withDefaults     :: Monad m => ClassHierarchy ->  Set.Set MetaVar -> [Pred] -> m [(MetaVar, [Pred], Type)]
+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)
hunk ./FrontEnd/Tc/Class.hs 181
--- Return retained predicates and a defaulting substitution
-genDefaults :: Monad m => ClassHierarchy ->  Set.Set MetaVar -> [Pred] -> m ([Pred],[(MetaVar,Type)])
+-- | Return retained predicates and a defaulting substitution
+genDefaults :: Monad m
+            => ClassHierarchy
+            -> Set.Set MetaVar -- ^ Variables to be considered known
+            -> [Pred]          -- ^ Predicates to examine
+            -> m ([Pred], [(MetaVar,Type)])
hunk ./FrontEnd/Tc/Class.hs 194
-ambig :: ClassHierarchy -> Set.Set MetaVar -> [Pred] -> [(MetaVar,[Pred],[Type])]
+ambig :: ClassHierarchy
+      -> Set.Set MetaVar -- ^ Variables that are to be considered known
+      -> [Pred]          -- ^ Predicates to consider
+      -> [(MetaVar, [Pred], [Type])] -- ^ List of (ambiguous meta var, predicates involving it, potential defaults)
hunk ./FrontEnd/Tc/Class.hs 238
+-- FIXME use @default@ declarations!