table
実装されていない定数値 ( )を使用する関数が実装されている型クラスを宣言したいと考えています。
class FromRow a => StdQueries a where
table :: String
byId :: Int -> QueryM (Maybe a)
byId = fmap listToMaybe . queryM sql . Only
where sql = read $ "SELECT * FROM " ++ table ++ " WHERE id = ?"
byId
アイデアは単純です: を指定するだけでこの型クラスをインスタンス化することで、(および他の同様の関数) を利用できるようにしたいと考えていますtable
。
instance StdQueries SomeType where
table = "the_constant_value_for_this_type"
しかし、コンパイラは次のメッセージで不平を言い続けます:
The class method `table'
mentions none of the type variables of the class StdQueries a
When checking the class method: table :: String
In the class declaration for `StdQueries'
そのような問題の解決策はありますか?助けを借りてだますことはできますnewtype
か?