
I think there's a bug in unique naming for instances of (originally) derived classes. Putting this in one file: data Result = Result { resultModule :: TagString, resultName :: TagString, resultType :: TagString, resultInfo :: [Reason], resultScore :: Score } deriving Show and this in another: data ClassTable = ClassTable (Map.Map String [TypeMatch]) deriving Show generates code that has the function a25v28v25v31showsPrec in both modules, and thus causes this error: Hat/MatchClass.hs:30:12: Ambiguous occurrence `a25v28v25v31showsPrec' It could refer to either `Hat.MatchClass.a25v28v25v31showsPrec', defined at Hat/MatchClass.hs:368:0 or `Hat.Result.a25v28v25v31showsPrec', imported from Hat.Result at Hat/MatchClass.hs:11:0-16 Bob