
#13154: Standalone-derived anyclass instances aren't as permissive as empty instances -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: RyanGlScott Type: bug | Status: patch Priority: normal | Milestone: 8.6.1 Component: Compiler (Type | Version: 8.1 checker) | Resolution: | Keywords: deriving Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D3337 Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): Another component of this issue which Iceland_jack noticed is that one cannot standalone-derive any instances for primitive types, among which include `(->)`: {{{#!hs {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE StandaloneDeriving #-} module Bug where import GHC.Exts class C1 a deriving instance C1 (a -> b) class C2 (a :: TYPE 'IntRep) deriving instance C2 Int# }}} {{{ $ ghc/inplace/bin/ghc-stage2 Bug.hs [1 of 1] Compiling Bug ( Bug.hs, Bug.o ) Bug.hs:11:1: error: • Can't make a derived instance of ‘C1 (a -> b)’: The last argument of the instance must be a data or newtype application • In the stand-alone deriving instance for ‘C1 (a -> b)’ | 11 | deriving instance C1 (a -> b) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Bug.hs:14:1: error: • Can't make a derived instance of ‘C2 Int#’: The last argument of the instance must be a data or newtype application • In the stand-alone deriving instance for ‘C2 Int#’ | 14 | deriving instance C2 Int# | ^^^^^^^^^^^^^^^^^^^^^^^^^ }}} I'll lump this bug under this ticket. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13154#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler