[GHC] #13594: Typechecker behavior w.r.t. BangPatterns and nested foralls has changed in 8.2

GHC ghc-devs at haskell.org
Thu May 11 14:08:35 UTC 2017


#13594: Typechecker behavior w.r.t. BangPatterns and nested foralls has changed in
8.2
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                Owner:  bgamari
            Type:  bug               |               Status:  merge
        Priority:  high              |            Milestone:  8.2.1
       Component:  Compiler (Type    |              Version:  8.2.1-rc2
  checker)                           |             Keywords:  BangPatterns,
      Resolution:                    |  RankNTypes
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  GHC rejects       |  Unknown/Multiple
  valid program                      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D3525
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by RyanGlScott):

 Erm, the commit in 372995364c52eef15066132d7d1ea8b6760034e6 doesn't
 actually fix either of the programs I reported, does it? I get the same
 errors on a recent GHC HEAD build:

 {{{
 $ inplace/bin/ghc-stage2 --interactive
 GHCi, version 8.3.20170511: http://www.haskell.org/ghc/  :? for help
 Loaded GHCi configuration from /home/rgscott/.ghci
 λ> :set -XBangPatterns -XRankNTypes  -XTypeFamilies
 λ> let x :: forall a . a ~ Integer => forall b. b ~ Integer => (a, b); !x
 = (1, 2)

 <interactive>:2:74: error:
     • Couldn't match expected type ‘forall b. b ~ Integer => (a, b)’
                   with actual type ‘(Integer, Integer)’
     • In the expression: (1, 2)
       In a pattern binding: !x = (1, 2)
     • Relevant bindings include
         x :: forall b. b ~ Integer => (a, b) (bound at <interactive>:2:70)
 }}}

 {{{
 $ inplace/bin/ghc-stage2 ../Bug.hs
 [1 of 1] Compiling Bug              ( ../Bug.hs, ../Bug.o )

 ../Bug.hs:6:1: error:
     Overloaded signature conflicts with monomorphism restriction
       x :: forall a. a ~ Integer => forall b. b ~ Integer => (a, b)
   |
 6 | x :: forall a . a ~ Integer => forall b. b ~ Integer => (a, b)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 }}}

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


More information about the ghc-tickets mailing list