Hello Haskellers, I'm having trouble writing a Read Instance for my GATD. Arg this GATD!! It causes me more problems that it solves ;) Especially with no automatic deriving, it adds a lot of burden to my code.
>data Obs a where > ProposedBy :: Obs Int -- The player that proposed the tested rule > Turn :: Obs Turn -- The current turn > Official :: Obs Bool -- whereas the tested rule is official > Equ :: (Eq a, Show a, Typeable a) => Obs a -> Obs a -> Obs Bool > Plus :: (Num a) => Obs a -> Obs a -> Obs a > Time :: (Num a) => Obs a -> Obs a -> Obs a > Minus :: (Num a) => Obs a -> Obs a -> Obs a > And :: Obs Bool -> Obs Bool -> Obs Bool > Or :: Obs Bool -> Obs Bool -> Obs Bool > Not :: Obs Bool -> Obs Bool > Konst :: a -> Obs a > instance Read a => Read (Obs a) where > readPrec = (prec 10 $ do > Ident "ProposedBy" <- lexP > return (ProposedBy)) > +++ > (prec 10 $ do > Ident "Official" <- lexP > return (Official)) > (etc...) Observable.lhs:120:8: Couldn't match expected type `Int' against inferred type `Bool' Expected type: ReadPrec (Obs Int) Inferred type: ReadPrec (Obs Bool) Indeed "ProposedBy" does not have the same type that "Official". Mmh how to make it all gently mix altogether? Best, Corentin _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe