[GHC] #10619: Order matters when type-checking

GHC ghc-devs at haskell.org
Wed Jul 8 15:24:07 UTC 2015


#10619: Order matters when type-checking
-------------------------------------+-------------------------------------
              Reporter:  goldfire    |             Owner:
                  Type:  bug         |            Status:  new
              Priority:  normal      |         Milestone:
             Component:  Compiler    |           Version:  7.10.1
              Keywords:              |  Operating System:  Unknown/Multiple
          Architecture:              |   Type of failure:  None/Unknown
  Unknown/Multiple                   |        Blocked By:
             Test Case:              |   Related Tickets:
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------
 When I say

 {{{
 {-# LANGUAGE RankNTypes #-}

 module Bug where

 foo True  = (\x -> x) :: (forall a. a -> a) -> forall b. b -> b
 foo False = \y -> y
 }}}

 the module compiles. But when I say

 {{{
 {-# LANGUAGE RankNTypes #-}

 module Bug where

 foo False = \y -> y
 foo True  = (\x -> x) :: (forall a. a -> a) -> forall b. b -> b
 }}}

 it doesn't, failing with

 {{{
 Bug.hs:6:13:
     Couldn't match type ‘b0 -> b0’ with ‘forall a. a -> a’
     Expected type: (forall a. a -> a) -> forall a. a -> a
       Actual type: (forall a. a -> a) -> b0 -> b0
     In the expression:
         (\ x -> x) :: (forall a. a -> a) -> forall b. b -> b
     In an equation for ‘foo’:
         foo True = (\ x -> x) :: (forall a. a -> a) -> forall b. b -> b
 }}}

 I believe this behavior stems from the special case in `tcMonoBinds`, for
 non-recursive functions without a type signature. I believe the bug would
 be fixed if that function also checks to make sure that there is precisely
 one clause to the function. Do you agree?

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


More information about the ghc-tickets mailing list