[GHC] #12546: GeneralizedNewtypeDeriving produces error messages with incorrect kind signatures
GHC
ghc-devs at haskell.org
Fri Aug 26 20:31:46 UTC 2016
#12546: GeneralizedNewtypeDeriving produces error messages with incorrect kind
signatures
-------------------------------------+-------------------------------------
Reporter: lexi.lambda | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Incorrect | Unknown/Multiple
warning at compile-time | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Description changed by lexi.lambda:
@@ -3,1 +3,1 @@
- {{{
+ {{{#!haskell
New description:
Given the following program:
{{{#!haskell
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE FlexibleInstances #-}
import Control.Monad.Reader
newtype AppM a = AppM (ReaderT Int IO a)
deriving (Functor, Applicative, Monad, MonadReader)
}}}
The `MonadReader` deriving declaration should be `MonadReader Int`. GHC
produces the following error message:
{{{
• Expecting one more argument to ‘MonadReader’
Expected kind ‘* -> Constraint’,
but ‘MonadReader’ has kind ‘* -> (* -> *) -> Constraint’
• In the newtype declaration for ‘AppM’
}}}
This error message is confusing to me. The kind of `MonadReader` is `* ->
(* -> *) -> Constraint`, as the error message states, which makes sense.
However, the error message states that it expects kind `* -> Constraint`,
despite the fact that `MonadReader Int` is actually of kind `(* -> *) ->
Constraint`.
,,(This description is adapted from
[http://stackoverflow.com/q/39172590/465378 this Stack Overflow
question].),,
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12546#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list