#haskell #types #sqlite #hdbc
#haskell #типы #sqlite #hdbc
Вопрос:
У меня есть это:
import Database.HDBC.Sqlite3
import Database.HDBC
Для преобразования выбранных строк из базы данных я использую это:
convertFromSql :: [SqlValue] -> [String]
convertFromSql [name, address, number, postal, city, country] =
[cName, cAddress, cNumber, cPostal, cCity, cCountry] where
cName = (fromSql name)
cAddress = (fromSql address) :: String
cNumber = (fromSql number) :: String
cPostal = (fromSql postal) :: String
cCity = (fromSql city) :: String
cCountry = (fromSql country) :: String
Все работает, но могу ли я, например map
fromSql
, просмотреть список записей, извлеченных из sql
? И, может быть, длинный путь: zip
сопоставленный список со списком типов, чтобы приведенный выше код был более кратким?
Комментарии:
1. Так просто, как
convertFromSql = map fromSql
.2. Хотя
fromSql :: Convertible SqlValue a => SqlValue -> a
тот факт, что вы явно ввелиconvertFromSql
as[SqlValue] -> [String]
, означает, чтоfromSql
он будет специализированSqlValue -> String
, когда вы примените его к списку ввода.3. @Chepner: правда, я плохо понимаю (в данном случае)
String
, что все это4. @arrowd: не работает, поскольку выбранные строки представлены в виде списка списков. Возможно, с двойным отображением. Попробую.
5. @Madderote Да,
map convertFromSql :: [[SqlValue]] -> [[String]]
.