Newtype deriving mixing up types
Simon Peyton-Jones
simonpj at microsoft.com
Fri Dec 17 09:49:21 CET 2010
Yes, it's a bug all right. See http://hackage.haskell.org/trac/ghc/ticket/4846
Thanks
Simon
| -----Original Message-----
| From: glasgow-haskell-users-bounces at haskell.org [mailto:glasgow-haskell-
| users-bounces at haskell.org] On Behalf Of Emil Axelsson
| Sent: 16 December 2010 13:26
| To: glasgow-haskell-users at haskell.org
| Subject: Newtype deriving mixing up types
|
| Hello!
|
| I attach a program which I suspect demonstrates a bug in GHC. The important
| lines are:
|
| showType :: forall a . Expr a -> String
| showType (Lit _) = show (typeOf (undefined :: a))
|
| test1 = showType (mk :: Expr BOOL) -- Prints "Bool" (wrong?)
| test2 = showType (Lit mk :: Expr BOOL) -- Prints "Main.BOOL" (correct)
|
| test1 and test2 give different results, even though showType shouldn't be
| able to tell them apart. It seems that the Typeable context packed with the
| Lit constructor is wrong in test2.
|
| I had to use two extra classes and newtype deriving to trigger this behavior.
| Note that if I change
|
| deriving instance B BOOL
|
| to
|
| instance B BOOL
|
| the result is correct.
|
| Tested with both 6.12.3 and 7.0.1.
|
| Should I report this as a bug?
|
| Thanks!
|
| / Emil
More information about the Glasgow-haskell-users
mailing list