-type ClassOpItem = (Id, -- Selector function; contains unfolding
- Id, -- Default methods
- Bool) -- True <=> an explicit default method was
- -- supplied in the class decl
+type FunDep a = ([a],[a]) -- e.g. class C a b c | a b -> c, a c -> b where ...
+ -- Here fun-deps are [([a,b],[c]), ([a,c],[b])]
+
+type ClassOpItem = (Id, DefMeth Name)
+ -- Selector function; contains unfolding
+ -- Default-method info
+
+data DefMeth id = NoDefMeth -- No default method
+ | DefMeth id -- A polymorphic default method (named id)
+ -- (Only instantiated to RdrName and Name, never Id)
+ | GenDefMeth -- A generic default method
+ deriving Eq