-- *** b.
candidatesAux :: Map.Map TypeScheme [MatchOp]
           -> Map.Map TypeScheme [MatchOp]
           -> [Injection MatchOp MatchOp]
candidatesAux patMap cMap = crossInjs $ Map.foldWithKey f [] patMap where
    f typ l injL = let l' = Map.findWithDefault err typ cMap
                       err = error $ "candidates: No concrete ops for type: "
                             ++ show (pretty typ)
                   in injections l l' : injL
candidatesAux :: Map.Map TypeScheme [MatchOp]
           -> Map.Map TypeScheme [MatchOp]
           -> [Injection MatchOp MatchOp]
candidatesAux patMap cMap = crossInjs $ Map.foldWithKey f [] patMap where
    f typ l injL = let l' = Map.findWithDefault err typ cMap
                       err = error $ "candidates: No concrete ops for type: "
                             ++ show (pretty typ)
                   in injections l l' : injL
candidatesAux patMap cMap = crossInjs $ Map.foldWithKey f [] patMap where
    f typ l injL = let l' = Map.findWithDefault err typ cMap
                       err = error $ "candidates: No concrete ops for type: "
                             ++ show (pretty typ)
                   in injections l l' : injL