我正在编写一些 mysql-simple 数据库代码,并且我正在使我的数据类型成为 QueryResults 类型类的成员,以便轻松解除它们。
但我最终得到了很多功能,比如:
data FullName {
first_name :: String,
middle_name :: String,
last_name :: String
} deriving Show
newtype UID = UID Integer deriving Show
go :: [(String, String)] -> Maybe FullName
go fvs = do
first <- lookup "first_name" fvs
middle <- lookup "middle_name" fvs
last <- lookup "last_name" fvs
return $ FullName first middle last
go :: [(String, String)] -> Maybe UID
go fvs = do
uid <- lookup "uid" fvs
return $ UID (read uid)
查找只是返回的地方(也许是一个)。其中一些数据类型有十几列,所以这很乏味。
所以有很多这样的数据类型,我希望能够编写一个我会这样调用的函数:
go RealName ["first_name","middle_name","last_name"] fvs
go UID ["uid"] fvs
但我不知道这样的事情应该是什么类型,或者我将如何去做。也许这甚至是不可能的。