Hi, I have a question about types in Haskell. I feel that I am overlooking some obvious solution, but I do not manage to get it right. Here is the plot:
I have got 4 different types of 'rules', each with it's own constructor. So i defined: > type Rules = [Rule] > data Rule = RuRule > | SgRule > | GcRule > | FrRule > deriving (Eq,Show) > data RuRule > = Ru { rrsrt :: Char > , rrant :: Expression > , rrfps :: FilePos > } deriving (Eq,Show) > data SgRule > = Sg { srfps :: FilePos > , srsig :: Rule > , srxpl :: String > , srtyp :: (Concept,Concept) > } deriving (Eq,Show) > data GcRule > = Gc { grfps :: FilePos > , grspe :: Morphism > , grgen :: Expression > } deriving (Eq,Show) > data FrRule > = Fr { fraut :: AutType > , frdec :: Declaration > , frcmp :: Expression > , frpat :: String > } deriving (Eq,Show) Now I would like to be able to use these rules without knowing what kind they are, in lists, however i get errors like Couldn't match expected type `Rule' against inferred type `SgRule'. Is there any other (even trivial?) way to get this done? I know Haskell well enough to know that it is possible, but I don not know Haskell well enough to know how to do it :teeth: Any help is kindly appreciated! Han Joosten -- View this message in context: http://www.nabble.com/nooby-question-on-typing-tp19470727p19470727.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe