[GHC] #13192: Ambiguity Caused By PolyKind and Not Helpful Error Messages

GHC ghc-devs at haskell.org
Fri Jan 27 04:32:50 UTC 2017


#13192: Ambiguity Caused By PolyKind and Not Helpful Error Messages
-------------------------------------+-------------------------------------
           Reporter:  Shayan-Najd    |             Owner:
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.1
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  Poor/confusing
  Unknown/Multiple                   |  error message
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 The following code results in a confusing/wrong error message, blaming a
 type variable (`a`) being a fixed Skolem variable:

 {{{#!hs
 {-# LANGUAGE TypeFamilies           #-}
 {-# LANGUAGE PolyKinds              #-}

 data I a

 type family   F  x
 type instance F  (I a) = a

 identity :: F (I a) -> F (I a)
 identity x = x
 }}}

 with the error message


 {{{
     • Couldn't match type ‘F (I a0)’ with ‘F (I a)’
       Expected type: F (I a) -> F (I a)
         Actual type: F (I a0) -> F (I a0)
       NB: ‘F’ is a type function, and may not be injective
       The type variable ‘a0’ is ambiguous
     • In the ambiguity check for ‘identity’
       To defer the ambiguity check to use sites, enable
 AllowAmbiguousTypes
       In the type signature: identity :: F (I a) -> F (I a)
   |
 9 | identity :: F (I a) -> F (I a)
   |             ^^^^^^^^^^^^^^^^^^
 }}}

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


More information about the ghc-tickets mailing list