Hi folks, I have been surprised by the derived instances of Data/Typeable when using the combinator ext1Q. First look at the following definition:
> useExt1 :: Data a => a -> () > useExt1 = undefined `ext1Q` (\ (Just _) -> ()) > testExt1 :: () > testExt1 = useExt1 (Just ()) As I expected, testExt1 yields () But when I define my own version of Maybe and derive the Data/Typeable instances > data MyMaybe a = MyJust a | MyNothing deriving (Data,Typeable) the corresponding test > useExt1' :: Data a => a -> () > useExt1' = undefined `ext1Q` (\ (MyJust _) -> ()) > testExt1' :: () > testExt1' = useExt1' (MyJust ()) yields *** Exception: Prelude.undefined All of this happens with both ghc 6.10.1 and 6.8.2. Is this a bug in the derived instances, e.g., in dataCast1? If so is there a concise tutorial telling me how to write correct instances for the data type I'm interested in (which is not MyMaybe)? Thanks for your time! Bernd _______________________________________________ Glasgow-haskell-users mailing list [email protected] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
