RE: GHC.Prim.Int# is not at TyThing?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

RE: GHC.Prim.Int# is not at TyThing?

GHC - devs mailing list

Does the above indicate that in fact, `GHC.Prim.Int#` 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 <[hidden email]>
Sent: 28 June 2018 06:08
To: [hidden email]; Simon Peyton Jones <[hidden email]>
Subject: GHC.Prim.Int# 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:

 

 

It seems like in older versions, we had


   λ> :i GHC.Prim.Int#
   data GHC.Prim.Int#     -- Defined in ‘GHC.Prim’
   λ> :k GHC.Prim.Int#
   GHC.Prim.Int# :: #

 

but in GHC 8.4 this is changed so:

 

   λ> :i GHC.Prim.Int#
   data GHC.Prim.Int# :: TYPE 'GHC.Types.IntRep
      -- Defined in ‘GHC.Prim’
   λ> :k GHC.Prim.Int#
   GHC.Prim.Int# :: TYPE 'GHC.Types.IntRep

 

Does the above indicate that in fact, `GHC.Prim.Int#`

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.

 


_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
Reply | Threaded
Open this post in threaded view
|

RE: GHC.Prim.Int# is not at TyThing?

GHC - devs mailing list

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 <[hidden email]>
Sent: 29 June 2018 00:55
To: Simon Peyton Jones <[hidden email]>
Cc: [hidden email]
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 <[hidden email]> wrote:

Does the above indicate that in fact, `GHC.Prim.Int#` 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 <[hidden email]>
Sent: 28 June 2018 06:08
To: [hidden email]; Simon Peyton Jones <[hidden email]>
Subject: GHC.Prim.Int# 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:

 

 

It seems like in older versions, we had


   λ> :i GHC.Prim.Int#
   data GHC.Prim.Int#     -- Defined in ‘GHC.Prim’
   λ> :k GHC.Prim.Int#
   GHC.Prim.Int# :: #

 

but in GHC 8.4 this is changed so:

 

   λ> :i GHC.Prim.Int#
   data GHC.Prim.Int# :: TYPE 'GHC.Types.IntRep
      -- Defined in ‘GHC.Prim’
   λ> :k GHC.Prim.Int#
   GHC.Prim.Int# :: TYPE 'GHC.Types.IntRep

 

Does the above indicate that in fact, `GHC.Prim.Int#`

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.

 


_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
Reply | Threaded
Open this post in threaded view
|

RE: GHC.Prim.Int# is not at TyThing?

GHC - devs mailing list

Well what is lexically in scope is, well, whatever should be lexically in scope at that point.  Yes, I suppose your lexicial environment might have changed, but I can’t speculate as to why.

 

Starting with Strings makes you vulnerable to this.

 

Starting with an “Orig” RdrName would be more robust.

 

Simon

 

From: Ranjit Jhala <[hidden email]>
Sent: 29 June 2018 15:26
To: Simon Peyton Jones <[hidden email]>
Cc: [hidden email]
Subject: Re: GHC.Prim.Int# is not at TyThing?

 

Dear Simon,

 

Yes I expect that the notion of what is in scope in the GlobalRdrEnv has changed across the GHC versions?

 

Earlier, these lookups would succeed but now (likely due to some artifact of how we are using the API) they fail.

 

You are right that we can get Int# from the wiredInTyCons; but the issue arises with other names (eg “Fractional”)

 

Which are not (?) wiredIn.

 

 

The silver lining is this may force us to redo the LH name resolution entirely in a “lazy” fashion only using those Var and Type

 

That actually appear in the core being analyzed (as opposed to the current “eager” fashion where we use the hscenv to 

 

lookup all names in the LH prelude...)

 

Thanks!

 

Ranjit.

 

On Fri, Jun 29, 2018 at 12:21 AM Simon Peyton Jones <[hidden email]> wrote:

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 <[hidden email]>
Sent: 29 June 2018 00:55
To: Simon Peyton Jones <[hidden email]>
Cc: [hidden email]
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 <[hidden email]> wrote:

Does the above indicate that in fact, `GHC.Prim.Int#` 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 <[hidden email]>
Sent: 28 June 2018 06:08
To: [hidden email]; Simon Peyton Jones <[hidden email]>
Subject: GHC.Prim.Int# 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:

 

 

It seems like in older versions, we had


   λ> :i GHC.Prim.Int#
   data GHC.Prim.Int#     -- Defined in ‘GHC.Prim’
   λ> :k GHC.Prim.Int#
   GHC.Prim.Int# :: #

 

but in GHC 8.4 this is changed so:

 

   λ> :i GHC.Prim.Int#
   data GHC.Prim.Int# :: TYPE 'GHC.Types.IntRep
      -- Defined in ‘GHC.Prim’
   λ> :k GHC.Prim.Int#
   GHC.Prim.Int# :: TYPE 'GHC.Types.IntRep

 

Does the above indicate that in fact, `GHC.Prim.Int#`

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.

 


_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs