[GHC] #15376: GHC determine illegal kind for standalone deriving with Deriving via

GHC ghc-devs at haskell.org
Sat Jul 14 13:30:16 UTC 2018


#15376: GHC determine illegal kind for standalone deriving with Deriving via
-------------------------------------+-------------------------------------
           Reporter:                 |             Owner:  (none)
  mizunashi_mana                     |
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:  8.6.1
          Component:  Compiler       |           Version:
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Happy to release GHC 8.6.1-alpha1!  I used it to test new extensions, and
 then I met below errors:

 {{{
 $ ghci-8.6.0.20180627
 GHCi, version 8.6.0.20180627: http://www.haskell.org/ghc/  :? for help
 Prelude> :set -XDerivingVia -XStandaloneDeriving
 Prelude> newtype FunctorWrapped f a = FunctorWrapped (f a)
 Prelude> deriving via f instance Functor f => Functor (FunctorWrapped f)

 <interactive>:3:33: error:
     • Expected kind ‘* -> *’, but ‘f’ has kind ‘*’
     • In the first argument of ‘Functor’, namely ‘f’
       In the stand-alone deriving instance for
         ‘Functor f => Functor (FunctorWrapped f)’

 <interactive>:3:62: error:
     • Expected kind ‘* -> *’, but ‘f’ has kind ‘*’
     • In the first argument of ‘FunctorWrapped’, namely ‘f’
       In the first argument of ‘Functor’, namely ‘(FunctorWrapped f)’
       In the stand-alone deriving instance for
         ‘Functor f => Functor (FunctorWrapped f)’
 }}}

 However,

 {{{
 newtype FunctorWrapped f a = FunctorWrapped (f a)
     deriving Functor via f
 }}}

 is passed through on GHC 8.6.1-alpha1.

 Is this a bug or my misunderstand?

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


More information about the ghc-tickets mailing list