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

2018-06-29 Thread Simon Peyton Jones via ghc-devs
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 
Sent: 29 June 2018 15:26
To: Simon Peyton Jones 
Cc: ghc-devs@haskell.org
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 
mailto:simo...@microsoft.com>> 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 mailto:jh...@cs.ucsd.edu>>
Sent: 29 June 2018 00:55
To: Simon Peyton Jones mailto:simo...@microsoft.com>>
Cc: ghc-devs@haskell.org<mailto:ghc-devs@haskell.org>
Subject: Re: 
GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23=02%7C01%7Csimonpj%40microsoft.com%7C61970cfbaa144ccb18a008d5ddcc39ca%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636658791571090137=e4FS49z0DGAtfTTc1uT1mn4z5WyLxiDko8%2BbebrM%2BeM%3D=0>
 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 
mailto:simo...@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=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738480488=wjMjCtlPxk9zJjXh9LmBD3MFX5jZWHZOXIky92i0%2Fr8%3D=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 mailto:jh...@cs.ucsd.edu>>
Sent: 28 June 2018 06:08
To: ghc-devs@haskell.org<mailto:ghc-devs@haskell.org>; Simon Peyton Jones 
mailto:simo...@microsoft.com>>
Subject: 
GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23=02%7C01%7Csimonpj%40microsoft.com%7Cc28a305b5d2b41bab86e08d5dd528c47%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636658268973561968=E2TQ6gQUP30NCjj0I9JVGQfHnA416qG4Fuy62V9jSS4%3D=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=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738430452=UJf7MulnJzYw1hlbcvcTm13z%2FDCthgAueixMRBm03A8%3D=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=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738430452=UJf7MulnJzYw1hlbcvcTm13z%2FDCthgAueixMRBm03A8%3D=0>
   data 
GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738440460=rjNbL7wVonyqZ%2ByApAjEm95%2FNAtW7AZ5rxul%2FaX4rOo%3D=0>
 -- Defined in ‘GHC.Prim’
   λ> :k 
GHC.Prim.Int#<https:/

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

2018-06-29 Thread Simon Peyton Jones via ghc-devs
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 
Sent: 29 June 2018 00:55
To: Simon Peyton Jones 
Cc: ghc-devs@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 
mailto:simo...@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=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738480488=wjMjCtlPxk9zJjXh9LmBD3MFX5jZWHZOXIky92i0%2Fr8%3D=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 mailto:jh...@cs.ucsd.edu>>
Sent: 28 June 2018 06:08
To: ghc-devs@haskell.org<mailto:ghc-devs@haskell.org>; Simon Peyton Jones 
mailto:simo...@microsoft.com>>
Subject: 
GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23=02%7C01%7Csimonpj%40microsoft.com%7Cc28a305b5d2b41bab86e08d5dd528c47%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636658268973561968=E2TQ6gQUP30NCjj0I9JVGQfHnA416qG4Fuy62V9jSS4%3D=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=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738430452=UJf7MulnJzYw1hlbcvcTm13z%2FDCthgAueixMRBm03A8%3D=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=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738430452=UJf7MulnJzYw1hlbcvcTm13z%2FDCthgAueixMRBm03A8%3D=0>
   data 
GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738440460=rjNbL7wVonyqZ%2ByApAjEm95%2FNAtW7AZ5rxul%2FaX4rOo%3D=0>
 -- Defined in ‘GHC.Prim’
   λ> :k 
GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738440460=rjNbL7wVonyqZ%2ByApAjEm95%2FNAtW7AZ5rxul%2FaX4rOo%3D=0>
   
GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738450468=PHl1FNZIA%2BjAwkokb1EkESg8ubKDanDq8XVd5Tx%2FzBA%3D=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=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738460476=xBguuP%2F0N8yDKAf2L6epMwLxjSTPW4zVRxcPT82P4vw%3D=0>
   data 
GHC.Prim.Int#<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2FGHC.Prim.Int%23=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738460476=xBguuP%2F0N8yDKAf2L6epMwLxjSTPW4zVRxcPT82P4vw%3D=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=02%7C01%7Csimonpj%40microsoft.com%7C713e3d8011294dfe122008d5dcb51974%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636657592738470484=4BLfL0OEweHSELHYA8c4IYUDNUhwai%2FxrZf7ljWEGuE%3D=0>
   
GHC.Prim.Int#<https://na01.safelinks.protection.ou

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

2018-06-28 Thread Simon Peyton Jones via ghc-devs
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 
Sent: 28 June 2018 06:08
To: ghc-devs@haskell.org; Simon Peyton Jones 
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:

   
GHC.Prim.Int#

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
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs