
Hi everyone! I have data declaration like this: data MyTable = MyTableOne Int String | MyTableTwo Int String String and function that insert new row in tables: newRow :: MyTable -> IO Int newRow (MyTableOne fld1 fld2 ) = ..... newRow (MyTableTwo fld1 fld2 fld3 ) = ...... That work perfectly, I enjoy it. But now I want to get rows, and I don't know what to do :( I want func something like this: getRow :: Int -> [MyTable] .... - what should I write here ? Possibly use this function: getRow 23 :: MyTableTwo (like haskell function Read for example: read "7" :: Int) I try to use typeclasses, class GetRow a where hasID :: Int -> IO a instance GetRow MyTableOne where hasID myid = return [(MyTableOne 1 "name")] instance GetRow MyTableTwo where hasID myid = return [(MyTableTwo 1 "name" "path")] But I have error: Not in scope: type constructor or class `MyTableOne' make: *** [Foo.so] Error 1 Not in scope: type constructor or class `MyTableTwo' make: *** [Foo.so] Error 1 I ask you to suggest me right way in my efforts Cheers!