Accessing the "original" names via GHC API

Ranjit Jhala jhala at cs.ucsd.edu
Wed Jan 25 03:00:05 UTC 2017


Dear Joachim,

You are right -- some more context.

Given

  tc  :: TyCon
  m   :: ModName
  env :: HscEnv

I want to get a

  s :: String

such that _in_ the context given by `m` and `env` I can resolve `s` to get
back the original `TyCon`, e.g. something like

  L _ rn <- hscParseIdentifier env s
  name   <- lookupRdrName env modName rn

would then return `name :: Name` which corresponds to the original `TyCon`.

That is, the goal is _not_ pretty printing, but "serialization" into a
String
representation that lets me recover the original `TyCon` later.

(Consequently, `"Data.Set.Base.Set"` doesn't work as the `Data.Set.Base`
module is hidden and hence, when I try the above, GHC complains that the
name is not in scope.

Does that clarify the problem?

Thanks!

- Ranjit.


On Tue, Jan 24, 2017 at 6:11 PM, Joachim Breitner <mail at joachim-breitner.de>
wrote:

> Hi Ranjit,
>
> Am Dienstag, den 24.01.2017, 16:09 -0800 schrieb Ranjit Jhala:
> > 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?
>
> in a way, `Data.Set.Base.Set` is the “original”, proper name for Set,
> everything else is just a local view on the name.
>
> So, are you maybe looking for a way to get the “most natural way” to
> print a name in a certain module context?
>
> This functionality must exist somewhere, as ghci is printing out errors
> this way. But it certainly would require an additional argument to
> tyconString, to specify in which module to print the name.
>
> Greetings,
> Joachim
>
>
> --
> Joachim “nomeata” Breitner
>   mail at joachim-breitner.dehttps://www.joachim-breitner.de/
>   XMPP: nomeata at joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F
>   Debian Developer: nomeata at debian.org
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/glasgow-haskell-users/attachments/20170124/b154658a/attachment.html>


More information about the Glasgow-haskell-users mailing list