Haskell более элегантное преобразование из Sql в другие типы

#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]] .