
Try the new stuff (in GHC6.2) in the Data.Generics library. In particular the class Data, and its related types Constr and DataType http://www.haskell.org/ghc/docs/latest/html/libraries/base/Data.Generics .Basics.html Ralf and I are writing a paper about the extensions you'll find there, which aren't in our original "scrap your boilerplate" paper. Simon | -----Original Message----- | From: glasgow-haskell-users-bounces@haskell.org [mailto:glasgow-haskell-users- | bounces@haskell.org] On Behalf Of MR K P SCHUPKE | Sent: 21 January 2004 12:35 | To: glasgow-haskell-users@haskell.org | Subject: Generics...(ish) | | | I am currently using template haskell to generate code to work on a | record data type... This however is not very pretty, and I wondered if | there was another way to do what I want in GHC. I need to iterate over | the contents of a record for example: | | data Test = Test { a :: Int, b :: String, c :: Float } | | If I derive Typeable, I can compare the data-type, but not decompose it, | I don't know much about generics, and was wondering if I might be able to | do it that way... | | The functionality I need is equivalent to being able to compare to instances, | for example, consider the type above, and the type below: | | data Test2 = Test2 { x :: Int, y :: String, z :: Float, zz :: String } | | i need to construct a function that could output the differenc between the | types, position at a time, so for the above the output would be: | | Test2 contains extra String field. | | or if "y" was to have the type Float, | | Position 2 : Types differ (Test has String, Test2 has Float) | Test2 contains extra String field. | | | I could do this easily if Typeable was a concrete type just by using | case statements... | | Regards, | Keean Schupke. | _______________________________________________ | Glasgow-haskell-users mailing list | Glasgow-haskell-users@haskell.org | http://www.haskell.org/mailman/listinfo/glasgow-haskell-users