GHC.Prim.Int# is not at TyThing?

Simon Peyton Jones simonpj at microsoft.com
Fri Jun 29 07:20:14 UTC 2018


Are you sure that Int# is in (lexical scope) in the GlobalRdrEnv of the HscEnv? If not, looking up the String in the lexicial environment will fail.

You can always just grab TysPrim.intPrimTyCon.

Simon

From: Ranjit Jhala <jhala at cs.ucsd.edu>
Sent: 29 June 2018 00:55
To: Simon Peyton Jones <simonpj at microsoft.com>
Cc: ghc-devs at haskell.org
Subject: Re: GHC.Prim.Int# is not at TyThing?

Dear Simon (and all),

Thanks! Then it seems my problem is much worse: somehow the code
I had that used the `HscEnv` to "resolve" names (i.e. get `Name`
and then `TyThing` and then `TyCon`) from plain strings is no
longer working with the GHC 8.4.3.

My efforts to distill the relevant LH code into a simple test that
shows the difference between the two versions (GHC 8.2 and 8.4) have
proven fruitless so far.

Can anyone point me to a (small?) example of using the GHC API
that implements something like:

   lookupVarType :: String -> IO String

which

   takes a `String` corresponding to the name of a top-level binder as input,
   and returns a `String` containing the TYPE of the binder as output?

Thanks!

- Ranjit.








On Thu, Jun 28, 2018 at 3:48 AM Simon Peyton Jones <simonpj at microsoft.com<mailto:simonpj at microsoft.com>> wrote:
Does the above indicate that in fact, `GHC.Prim.Int#`<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23%60&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738480488&sdata=wjMjCtlPxk9zJjXh9LmBD3MFX5jZWHZOXIky92i0%2Fr8%3D&reserved=0> DOES NOT (any longer) correspond to a `TyCon`?
No, it does not indicate that!  There still is a TyCon for Int#.  Indeed you can see it defined in TysPrim.intPrimTyCon.

Simon


From: Ranjit Jhala <jhala at cs.ucsd.edu<mailto:jhala at cs.ucsd.edu>>
Sent: 28 June 2018 06:08
To: ghc-devs at haskell.org<mailto:ghc-devs at haskell.org>; Simon Peyton Jones <simonpj at microsoft.com<mailto:simonpj at microsoft.com>>
Subject: GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23&data=02%7C01%7Csimonpj%40microsoft.com%7Cc28a305b5d2b41bab86e08d5dd528c47%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636658268973561968&sdata=E2TQ6gQUP30NCjj0I9JVGQfHnA416qG4Fuy62V9jSS4%3D&reserved=0> is not at TyThing?

Hi all,

I am trying to update LiquidHaskell to GHC 8.4.

In doing so, I find that I can no longer resolve
(i.e. get the `TyThing`, and hence `TyCon`)
corresponding to the name:

   GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738430452&sdata=UJf7MulnJzYw1hlbcvcTm13z%2FDCthgAueixMRBm03A8%3D&reserved=0>

It seems like in older versions, we had

   λ> :i GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738430452&sdata=UJf7MulnJzYw1hlbcvcTm13z%2FDCthgAueixMRBm03A8%3D&reserved=0>
   data GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738440460&sdata=rjNbL7wVonyqZ%2ByApAjEm95%2FNAtW7AZ5rxul%2FaX4rOo%3D&reserved=0>     -- Defined in ‘GHC.Prim’
   λ> :k GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738440460&sdata=rjNbL7wVonyqZ%2ByApAjEm95%2FNAtW7AZ5rxul%2FaX4rOo%3D&reserved=0>
   GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738450468&sdata=PHl1FNZIA%2BjAwkokb1EkESg8ubKDanDq8XVd5Tx%2FzBA%3D&reserved=0> :: #

but in GHC 8.4 this is changed so:

   λ> :i GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738460476&sdata=xBguuP%2F0N8yDKAf2L6epMwLxjSTPW4zVRxcPT82P4vw%3D&reserved=0>
   data GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738460476&sdata=xBguuP%2F0N8yDKAf2L6epMwLxjSTPW4zVRxcPT82P4vw%3D&reserved=0> :: TYPE 'GHC.Types.IntRep
      -- Defined in ‘GHC.Prim’
   λ> :k GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738470484&sdata=4BLfL0OEweHSELHYA8c4IYUDNUhwai%2FxrZf7ljWEGuE%3D&reserved=0>
   GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738470484&sdata=4BLfL0OEweHSELHYA8c4IYUDNUhwai%2FxrZf7ljWEGuE%3D&reserved=0> :: TYPE 'GHC.Types.IntRep

Does the above indicate that in fact, `GHC.Prim.Int#`<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23%60&data=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738480488&sdata=wjMjCtlPxk9zJjXh9LmBD3MFX5jZWHZOXIky92i0%2Fr8%3D&reserved=0>
DOES NOT (any longer) correspond to a `TyCon`? If so,
what does it correspond to? i.e. how is it represented
as a `Type` in GHC?

Any pointers would be most appreciated!

Thanks!

- Ranjit.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20180629/18c47e57/attachment.html>


More information about the ghc-devs mailing list