Ich habe folgendes typeclass die Modelle eine SQL-ähnliche Abfrageoptimierung:Haskell überlappende Instanzen und Typ Funktionen
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
das Problem ist, dass ich den Fehler „Widersprüchliche Familie Instanz Erklärungen“ über die optimierte Funktion des Typs erhalten. Warum ist das und wie kann ich es lösen? Es wäre wirklich schön, eine "Fallback-Instanz" zu haben, anstatt alle Fälle ausschöpfen zu müssen (was recht viele sein könnten) ...
Wie kann ich das umgehen? –
Ich kann mir keine Problemumgehungen vorstellen, abgesehen von der Erschöpfung aller Fälle. Es tut uns leid! –