[GHC] #8851: Standalone deriving and GND behave differently
GHC
ghc-devs at haskell.org
Thu Mar 6 09:52:16 UTC 2014
#8851: Standalone deriving and GND behave differently
------------------------------------+-------------------------------------
Reporter: simonpj | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.6.3
Keywords: | Operating System: Unknown/Multiple
Architecture: Unknown/Multiple | Type of failure: None/Unknown
Difficulty: Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: |
------------------------------------+-------------------------------------
Sergey Tromimovich writes: Trying to build random packages with fresh
ghc-7.8.1-rc2 I've come up with a strange bit:
https://github.com/trofi/Idris-
dev/commit/9f93122ba1aa075c2fa1555fea68a6c403697e04
Is it an intended behaviour that standalone deriving (A)
{{{
deriving instance Parsing IdrisInnerParser
}}}
is capable of doing more, than a deriving clause (B)
{{{
newtype IdrisInnerParser a
= IdrisInnerParser { runInnerParser :: Parser a }
deriving (Parsing)
}}}
where the class is defined thus
{{{
class Alternative m => Parsing m where
....
notFollowedBy :: (Monad m, Show a) => m a -> m ()
notFollowedBy p = try ((try p >>= unexpected . show) <|> pure ())
}}}
The error message from the (B) is
{{{
[50 of 75] Compiling Idris.ParseHelpers ( src/Idris/ParseHelpers.hs,
dist/build/Idris/ParseHelpers.o )
src/Idris/ParseHelpers.hs:40:97:
Could not coerce from ‘Monad Parser’ to ‘Monad IdrisInnerParser’
because the first type argument of ‘Monad’ has role Nominal,
but the arguments ‘Parser’ and ‘IdrisInnerParser’ differ
arising from the coercion of the method ‘notFollowedBy’ from type
‘forall a. (Monad Parser, Show a) => Parser a -> Parser
()’ to type
‘forall a.
(Monad IdrisInnerParser, Show a) =>
IdrisInnerParser a -> IdrisInnerParser ()’
Possible fix:
use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
When deriving the instance for (Parsing IdrisInnerParser)
}}}
Answer: no they should not behave differently.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8851>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list