The TyCon has a Name (use tyConName to get it).

The Name has a Module and an OccName (use nameModule and nameOccName to get them)

The OccName has a string (occNameString)

The Module has a ModuleName and a Package.

 

 

All of these will give the “original-name” info, ignoring what’s in scope.


Does that help?

 

S

 

From: Glasgow-haskell-users [mailto:glasgow-haskell-users-bounces@haskell.org] On Behalf Of Ranjit Jhala
Sent: 25 January 2017 00:09
To: glasgow-haskell-users@haskell.org
Subject: Accessing the "original" names via GHC API

 

Hi, 

 

I'm quite vexed trying to do the following. Suppose I have a file:

 

```

module Foo 

 

import qualified Data.Set as S

 

baz :: S.Set Int 

baz = S.empty

```

 

My goal is to write a function

 

   tyconString :: TyCon -> String 

 

(perhaps with extra parameters) such that given the 

`TyCon` corresponding to `Set`, I get back the "original" 

name `S.Set`, or even `Data.Set.Set`. 

 

Everything I've tried, which is fiddling with different variants of `PprStyle`, end up giving me `Data.Set.Base.Set`

 

Does anyone have a suggestion for how to proceed?

 

Thanks!

 

- Ranjit.