So, without really trying to understand the code, what you are saying is this: you want a finite map from RdrNames. That seems sensible enough, if the domain elements all appear in the same scope in the Haskell source. I don't have enough perspective to say whether a Uniquable instance is the way to get to a finite map here.
Richard On Jun 16, 2014, at 3:33 PM, Jan Stolarek <[email protected]> wrote: >> Why do you want this? The danger I see lurking is that you might find two >> RdrNames that give the same answer to getUnique but represent different > Yes, that's exactly my concern. > >> Why do you want this? > I'm working on #7282 - RebindableSyntax and Arrows. Here's a snippet from > desugaring of arrow > notation: > > leaves = concatMap leavesMatch matches > where > leavesMatch :: LMatch Id (Located (body Id)) -> [(Located (body Id), IdSet)] > leavesMatch (L _ (Match pats _ (GRHSs grhss binds))) > = let defined_vars = mkVarSet (collectPatsBinders pats) `unionVarSet` > mkVarSet (collectLocalBinders binds) > in [(body, mkVarSet (collectLStmtsBinders stmts) `unionVarSet` > defined_vars) | L _ > (GRHS stmts body) <- grhss] > > This is in the desugarer. But I need to also know `length leaves` at the > renaming stage, which > means I need to call `concatMap leavesMatch matches`. The problem is that in > the renamer my > datatypes are not parametrised by `Id`. I turned `Id` into a type parameter > `id`, but then I > can't use VarSets. I could use more general UniqueSets but only if `id` type > parameter is an > instance of Uniquable. And since in the renamer the datatypes are > parametrized with RdrName this > leads me to wanting Uniqable RdrName instance. > > Janek _______________________________________________ ghc-devs mailing list [email protected] http://www.haskell.org/mailman/listinfo/ghc-devs
