
Indeed the type checker does not actually clone identifiers.
ghc -c -ddump-rn -ddump-tc -dppr-debug Foo.hs
==================== Renamer ====================
nonrec {Foo.hs:3:1-8}
main:Foo.f{v r0}
main:Foo.f{v r0}
= {Foo.hs:3:5-8}
ghc-prim:GHC.Types.True{(w) d 6u}
<>
TYPE SIGNATURES
( main:Foo.f{v r0} [lid] :: ghc-prim:GHC.Types.Bool{(w) tc 3c} ) :: ghc-prim:GHC.Types.Bool{(w) tc 3c}
TYPE CONSTRUCTORS
COERCION AXIOMS
Dependent modules: []
Dependent packages: [base, ghc-prim, integer-gmp]
==================== Typechecker ====================
{Foo.hs:3:1-8}
AbsBinds
[]
[]
[( main:Foo.f{v r0} [lid] :: ghc-prim:GHC.Types.Bool{(w) tc 3c} ) <= ( f{v a9H} [lid] :: ghc-prim:GHC.Types.Bool{(w) tc 3c} )
<>]
( main:Foo.f{v r0} [lid] :: ghc-prim:GHC.Types.Bool{(w) tc 3c} )
:: ghc-prim:GHC.Types.Bool{(w) tc 3c}
[LclId]
{Foo.hs:3:1-8}
( f{v a9H} [lid] :: ghc-prim:GHC.Types.Bool{(w) tc 3c} )
:: ghc-prim:GHC.Types.Bool{(w) tc 3c}
[LclId]
( f{v a9H} [lid] :: ghc-prim:GHC.Types.Bool{(w) tc 3c} )
= {Foo.hs:3:5-8}
ghc-prim:GHC.Types.True{(w) v 6v}
<>
EvBinds{}
From: Edsko de Vries [mailto:edskodevries@gmail.com]
Sent: 27 March 2013 14:04
To: Simon Peyton-Jones
Cc: ghc-devs@haskell.org
Subject: Re: Stability of Uniques
So is there any way that I can see that an identifier in the renamed AST is really the same as an identifier in the typechecked AST?
On Wed, Mar 27, 2013 at 1:57 PM, Simon Peyton-Jones