
#10524: PolyKinds doesn't interact well with DeriveFunctor -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: #10561 | Differential Revisions: -------------------------------------+------------------------------------- Comment (by RyanGlScott): It looks like {{{PolyKinds}}} also breaks deriving {{{Data}}} instances as well: {{{#!hs {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE PolyKinds #-} import Data.Data newtype WrappedFunctor f a = WrapFunctor (f a) deriving (Data, Typeable) }}} This will result in the error: {{{ No instance for (Typeable a) arising from the 'deriving' clause of a data type declaration Possible fix: use a standalone 'deriving instance' declaration, so you can specify the instance context yourself When deriving the instance for (Data (WrappedFunctor f a)) }}} (Presumably, it's trying to infer the instance context {{{Data (f a), Typeable f, Typeable a) => Data (WrappedFunctor f a)}}}, but can't.) I'm not sure if this is due to the same underlying issue, but it seems likely, since that code will compile without {{{PolyKinds}}}. I reproduced this on GHC 7.8, 7.10, and HEAD. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10524#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler