The attached program works under hugs -98 but fails with GHC 5.04.2
with:
--------
Params2b.hs:6:
No instance for `Show (r String)'
When deriving the `Show' instance for type `S'
Params2b.hs:6:
No instance for `Show (r Int)'
When deriving the `Show' instance for type `S'
--------
If the `deriving` clause for `newtype S r` is replaced by the
commented-out instance declarations, both systems are happy.
Did I just get lucky with Hugs, or is GHC in error?
-- Dean
--------
{-# OPTIONS -fglasgow-exts #-}
class ByField s where
byField :: (forall a. r1 a -> r2 a) -> s r1 -> s r2
newtype S r = S (r Int, r String)
deriving Show
{-
instance Show (S Id) where
show (S s) = "S " ++ show s
instance Show (S []) where
show (S s) = "S " ++ show s
-}
instance ByField S where
byField f (S (i,s)) = S (f i,f s)
newtype Id a = Id a
deriving Show
twice :: S Id -> S []
twice = byField (\(Id x) -> [x,x])
main = do print s; print (twice s)
where s = S (Id 3, Id "abc")
_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs