Skip to content

GHC determine illegal kind for standalone deriving with Deriving via

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?

Trac metadata
Trac field Value
Version
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information