Need help interpreting renamer trace output

Philip K.F. Hölzenspies p.k.f.holzenspies at utwente.nl
Wed Mar 6 10:18:49 CET 2013


Dear GHC-ers,

I'm looking into the inerts of the renamer and I'm trying to get a feel
for where things are bound. I thought it would be useful to have a look
at how the renamer works on something known, so I compiled the following
program (with HEAD):


class Foo x where
  type FooTy x y
  foo :: x t -> FooTy x t
instance Foo [] where
  type FooTy [] a = a
  foo (x:xs) = x

main = print "Done"


In the output of -ddump-rn-trace, I see this around the declaration of
the class Foo:

bhtv [x, y]
     []
     ([(v1A, x), (v1C, y)], [(afy, x), (afz, y)])
bhtv [t]
     []
     ([(v1A, x), (vjW, t)], [(afy, x), (afA, t)])
rnTycl [(class Foo x where
           type family FooTy x y
           foo :: x t -> FooTy x t,
         [(rfv, FooTy)])]
       [REC
           class Foo x where
             type family FooTy x y
             foo :: x t -> FooTy x t]


I had expected that the 'x' and 'y' would have had the same uniques. The
last tuple of bhtv is a LocalRdrEnv, which is (OccEnv Name, NameSet).
Can someone explain to me the uses of both of these parts and why the
names mentioned in each have different uniques?

Regards,
Philip






More information about the Glasgow-haskell-users mailing list