[GHC] #15870: No skolem info panic

GHC ghc-devs at haskell.org
Wed Nov 7 17:47:55 UTC 2018


#15870: No skolem info panic
-------------------------------------+-------------------------------------
        Reporter:  sheaf             |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  highest           |            Milestone:  8.6.3
       Component:  Compiler (Type    |              Version:  8.6.2
  checker)                           |
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash or panic                     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Changes (by RyanGlScott):

 * priority:  normal => highest
 * milestone:   => 8.6.3


Comment:

 First, this appears to be a regression from GHC 8.4, which simply gives an
 error message:

 {{{
 $ /opt/ghc/8.4.4/bin/ghci Bug.hs -XTypeInType
 GHCi, version 8.4.4: http://www.haskell.org/ghc/  :? for help
 Loaded GHCi configuration from /home/rgscott/.ghci
 [1 of 1] Compiling Main             ( Bug.hs, interpreted )

 Bug.hs:30:34: error:
     • Expected kind ‘Optic a’, but ‘g2’ has kind ‘Optic b’
     • In the second argument of ‘Get’, namely ‘g2’
       In the type ‘Get a g2’
       In the type instance declaration for ‘Get’
    |
 30 |   type Get a (g1 :.: g2) = Get a g2
    |                                  ^^
 }}}

 So that's not good. I'll mark this as highest priority as a result.

 Second, the error message:

 {{{
     • Expected kind ‘Optic b’, but ‘g2’ has kind ‘Optic (Get a g1)’
     • In the second argument of ‘Gettable’, namely ‘g2’
       In the instance declaration for ‘Gettable a (g1 :.: g2)’
    |
 20 |         , Gettable b g2
    |
 }}}

 Is actually expected behavior (at least, at the moment). Even though
 you've written `b ~ Get a g1`, GHC isn't able to make use of this fact at
 the type level yet. See #12677/#15710 for the tickets tracking this
 infelicity.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15870#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list