Comments only
authorSimon Peyton Jones <simonpj@microsoft.com>
Thu, 23 Jul 2015 07:34:10 +0000 (08:34 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Thu, 23 Jul 2015 07:34:36 +0000 (08:34 +0100)
compiler/typecheck/FunDeps.hs

index 9d4ef1c..997dcc0 100644 (file)
@@ -225,12 +225,18 @@ checkClsFD :: FunDep TyVar -> [TyVar]             -- One functional dependency f
            -> ClsInst                             -- An instance template
            -> TyVarSet -> [Type] -> [Maybe Name]  -- Arguments of this (C tys) predicate
                                                   -- TyVarSet are extra tyvars that can be instantiated
            -> ClsInst                             -- An instance template
            -> TyVarSet -> [Type] -> [Maybe Name]  -- Arguments of this (C tys) predicate
                                                   -- TyVarSet are extra tyvars that can be instantiated
-           -> [([TyVar], [Pair Type])]
+           -> [([TyVar], [Pair Type])]  -- Empty or singleton
 
 checkClsFD fd clas_tvs
            (ClsInst { is_tvs = qtvs, is_tys = tys_inst, is_tcs = rough_tcs_inst })
            extra_qtvs tys_actual rough_tcs_actual
 
 
 checkClsFD fd clas_tvs
            (ClsInst { is_tvs = qtvs, is_tys = tys_inst, is_tcs = rough_tcs_inst })
            extra_qtvs tys_actual rough_tcs_actual
 
+-- Compare instance   {a,b}   C sx sp sy sq
+--         with       {c,d,e} C tx tp ty tq
+--         for fundep (x,y -> p,q)  from class  (C x p y q)
+-- If (sx,sy) unifies with (tx,ty), take the subst S
+-- 
+
 -- 'qtvs' are the quantified type variables, the ones which an be instantiated
 -- to make the types match.  For example, given
 --      class C a b | a->b where ...
 -- 'qtvs' are the quantified type variables, the ones which an be instantiated
 -- to make the types match.  For example, given
 --      class C a b | a->b where ...