私はいくつかの 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)
ルックアップが返される場所(おそらくa)。これらのデータ型の中には、多数の列が含まれているものがあるため、面倒です。
したがって、このようなデータ型がたくさんあり、次のように呼び出す関数を記述できるようにしたいと考えています。
go RealName ["first_name","middle_name","last_name"] fvs
go UID ["uid"] fvs
しかし、そのようなものがどのようなものであるべきか、またはどのように対処するかはわかりません。たぶん、これも不可能です。