Haskell überlappende Instanzen und Typ-Funktionen

8

Ich habe die folgende Typklasse, die eine SQL-ähnliche Abfrageoptimierung modelliert:

%Vor%

Das Problem ist, dass ich den Fehler "Conflicting family instance declarations" bei der Funktion Optimized type bekomme. 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 sehr viele sein können) ...

    
Giuseppe Maggiore 16.12.2010, 16:41
quelle

1 Antwort

7

Es ist illegal, überlappende Instanzen mit Typfamilien zu haben. Siehe das GHC-Handbuch , "Überlappung von Typ-Synonym Instanzen "für Details.

Der Grund dafür ist, dass zwei verschiedene mögliche Ergebnisse für eine type-function-Anwendung in Abhängigkeit von den verfügbaren Instanzen zu Unzuverlässigkeit führen können.

    
Ganesh Sittampalam 16.12.2010, 16:58
quelle