
Hi, I'm trying to get to grips with HDBC and have the following problem. When I run a query that returns a result set, each row comes back as a [SqlValue]. Naively, I thought the following function would convert a [SqlValue] into a string, but instead I get the error below. convrow2 :: [SqlValue] -> String convrow2 (x:xs) = foldl (\i j -> i ++ " | " ++ show j ) (show (fromSql x)) xs Prelude> :l TasksSimple.lhs [1 of 1] Compiling Main ( TasksSimple.lhs, interpreted ) TasksSimple.lhs:126:65: No instance for (convertible-1.0.5:Data.Convertible.Base.Convertible SqlValue a) arising from a use of `fromSql' at TasksSimple.lhs:126:65-73 Possible fix: add an instance declaration for (convertible-1.0.5:Data.Convertible.Base.Convertible SqlValue a) In the first argument of `show', namely `(fromSql x)' In the second argument of `foldl', namely `(show (fromSql x))' In the expression: foldl (\ i j -> i ++ " | " ++ show j) (show (fromSql x)) xs Failed, modules loaded: none. I tried looking at how to add an instance declaration for convertible, but was stumped. This code, however, works in GHCi. Would anyone know how to convert from [SqlValue] in a straightforward way without having to specify every field "by hand" ? I don't fancy doing this for each sql statement I need to run. convrow1 :: [SqlValue] -> String convrow1 [tasksid,title,added] = show ( (fromSql tasksid)::Integer ) ++ " | " ++ fromSql title ++ " | " ++ show ((fromSql added)::LocalTime) Any help is much appreciated, especially as I haven't looked at any Haskell in a while and wasn't any good with it before! Regards, Iain This is my set up: GHC is 6.10.4 HDBC is HDBC-2.1.1, HDBC-2.2.2, HDBC-postgresql-2.1.0.0,HDBC-postgresql-2.2.0.0 Convertible is convertible-1.0.5, convertible-1.0.8 OSX 10.6