[GHC] #16319: unexpected difference between newtype and data
GHC
ghc-devs at haskell.org
Thu Feb 14 14:20:56 UTC 2019
#16319: unexpected difference between newtype and data
----------------------------------------+---------------------------------
Reporter: pjljvdlaar | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.2
Keywords: | Operating System: Windows
Architecture: Unknown/Multiple | Type of failure: None/Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
----------------------------------------+---------------------------------
The following code compiles fine
{{{#!hs
-- | A referable class
-- An object can only have one reference.
-- For example, a function is either referenced by name of by signature
but not both.
class ( Eq (Ref a)
, Ord (Ref a)
, Hashable (Ref a)
, Show (Ref a)
, Read (Ref a)
, Data (Ref a)
) => Referable a where
type Ref a
toRef :: a -> Ref a
data Referable a =>
RefMap a = RefMap { -- | the HashMap
toHashMap :: HashMap.Map (Ref a) a
} deriving (Eq, Ord, Show, Read, Data)
}}}
yet following the hlint hint to replace data by the equivalent newtype
results in the following issues:
{{{
src\TorXakis\Referable.hs:59:43: error:
* Could not deduce (Eq (Ref a))
arising from the 'deriving' clause of a data type declaration
from the context: Eq a
bound by the deriving clause for `Eq (RefMap a)'
at src\TorXakis\Referable.hs:59:43-44
Possible fix:
use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
* When deriving the instance for (Eq (RefMap a))
|
59 | } deriving (Eq, Ord, Show, Read,
Data)
| ^^
src\TorXakis\Referable.hs:59:47: error:
* Could not deduce (Ord (Ref a))
arising from the 'deriving' clause of a data type declaration
from the context: Ord a
bound by the deriving clause for `Ord (RefMap a)'
at src\TorXakis\Referable.hs:59:47-49
Possible fix:
use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
* When deriving the instance for (Ord (RefMap a))
|
59 | } deriving (Eq, Ord, Show, Read,
Data)
}}}
I assume this is a bug...
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16319>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list