[GHC] #15895: Unable to match instance signatures

GHC ghc-devs at haskell.org
Wed Nov 14 13:45:00 UTC 2018


#15895: Unable to match instance signatures
-------------------------------------+-------------------------------------
           Reporter:  Iceland_jack   |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:  8.6.3
          Component:  Compiler       |           Version:  8.6.2
           Keywords:  InstanceSigs   |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Richard said GHC should be able to infer this

 {{{#!hs
 {-# Language PolyKinds         #-}
 {-# Language RankNTypes        #-}
 {-# Language TypeFamilies      #-}
 {-# Language FlexibleInstances #-}
 {-# Language InstanceSigs      #-}

 import Data.Kind

 class Ríki ob where
   type Arr :: ob -> ob -> Type

   ið  :: forall (a :: ob). Arr a a

 instance Ríki Type where
   type Arr = (->)

   ið :: Arr a a
   ið a = a
 }}}

 {{{
 $ ~/code/unmodifiedghc/inplace/bin/ghc-stage2 --interactive -ignore-dot-
 ghci ~/hs/693_bug.hs
 GHCi, version 8.7.20181029: http://www.haskell.org/ghc/  :? for help
 [1 of 1] Compiling Main             ( /home/baldur/hs/693_bug.hs,
 interpreted )

 /home/baldur/hs/693_bug.hs:18:3: error:
     • Couldn't match kind ‘ob’ with ‘*’
       ‘ob’ is a rigid type variable bound by
         the type signature for:
           ið :: forall ob (a :: ob). Arr a a
         at /home/baldur/hs/693_bug.hs:17:9-15
       When matching types
         p0 :: *
         a :: ob
       Expected type: Arr a a
         Actual type: p0 -> p0
     • The equation(s) for ‘ið’ have one argument,
       but its type ‘Arr a a’ has none
       In the instance declaration for ‘Ríki *’
     • Relevant bindings include
         ið :: Arr a a (bound at /home/baldur/hs/693_bug.hs:18:3)
    |
 18 |   ið a = a
    |   ^^^^^^^^
 Failed, no modules loaded.
 }}}

 It works if we specify the kind of `a` or use `(->)`

 {{{#!hs
   ið :: forall (a :: Type). Arr a a
 }}}
 {{{#!hs
   ið :: a -> a
 }}}

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


More information about the ghc-tickets mailing list