8
I持っているモデルSQLに似たクエリの最適化以下の型クラス:Haskellのオーバーラップインスタンスと型の関数
class OptimizableQuery q where
type Optimized q :: *
optimize :: q -> Optimized q
instance Query q => OptimizableQuery q where
type Optimized q = q
optimize q = q
instance (Query q, OptimizableQuery q) => OptimizableQuery (Select (Select q p) p) where
type Optimized (Select (Select q p) p) = Select (Optimized q) p
optimize (Select (Select q _) p) = Select (optimize q) p
問題は、私は最適化されたタイプの機能の「競合家族のインスタンス宣言」エラーを取得するということです。それはなぜですか、どうすれば解決できますか?すべてのケース(かなり多くの場合があります)を使い果たす必要がなく、「代替インスタンス」を持つことは本当にうれしいでしょう...
どうすれば対処できますか? –
私は、すべてのケースを使い果たしてからの回避策は考えていません。ごめんなさい! –