[GHC] #15472: GHC HEAD type inference regression post-"Remove decideKindGeneralisationPlan"

GHC ghc-devs at haskell.org
Fri Aug 3 17:01:40 UTC 2018


#15472: GHC HEAD type inference regression post-"Remove
decideKindGeneralisationPlan"
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                Owner:  (none)
            Type:  bug               |               Status:  closed
        Priority:  highest           |            Milestone:  8.8.1
       Component:  Compiler (Type    |              Version:  8.5
  checker)                           |
      Resolution:  invalid           |             Keywords:  TypeInType
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  GHC rejects       |  Unknown/Multiple
  valid program                      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Changes (by RyanGlScott):

 * status:  new => closed
 * resolution:   => invalid


Comment:

 Thanks, goldfire! I am quite appreciative of the time you took to make
 that very detailed response.

 If you're convinced that this is correct behavior, then I'm convinced too,
 so I'll close this.

 Fortunately, `singletons` doesn't have to work very hard at all to work
 around this. Option (B) does indeed work quite nicely (and is backwards
 compatible):

 {{{#!diff
 diff -ru singletons-2.4.1.orig/src/Data/Singletons/Prelude/List.hs
 singletons-2.4.1/src/Data/Singletons/Prelude/List.hs
 --- singletons-2.4.1.orig/src/Data/Singletons/Prelude/List.hs   2018-01-08
 11:09:19.000000000 -0500
 +++ singletons-2.4.1/src/Data/Singletons/Prelude/List.hs        2018-08-03
 12:53:25.480813967 -0400
 @@ -310,6 +310,7 @@
    permutations            :: forall a. [a] -> [[a]]
    permutations xs0        =  xs0 : perms xs0 []
      where
 +      perms :: [a] -> [a] -> [[a]]
        perms []     _  = []
        perms (t:ts) is = foldr interleave (perms ts (t:is)) (permutations
 is)
          where interleave    xs     r = let (_,zs) = interleave' id xs r
 in zs
 }}}

 An alternative option (D) is to leave off the type signature for
 `interleave` entirely. (Unfortunately, that's not backwards compatible due
 to #13549/#13555, but //c'est la vie//.)

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


More information about the ghc-tickets mailing list