Wenn ich Code wie folgt aus:Assoziierte Art Familie ausfällt, funktioniert, wenn Standalone gemacht
class C where
type T t1 t2
...
instance C (X t) where
type T (X t) (t a b) = a
...
ich den Fehler (mit GHC Kopf):
• Polymorphic type indexes of associated type ‘T’
(i.e. ones independent of the class type variables)
must be distinct type variables
Vermutlich ist dies, weil (t a b)
ist nicht eine einfache Variable wie der Fehler impliziert, sollte es sein.
Aber ich kann einfach den Code wie folgt neu zu organisieren:
type family T t1 t2
class C where
...
type instance T (X t) (t a b) = a
instance C (X t) where
....
Und dann scheint jetzt alles gut zu funktionieren.
Weil eine etwas unordentlichere Syntax, verliere ich alles, indem ich Typfamilien-Definitionen aus Klassen nehme, oder sind In-Klassen-Definitionen nur syntaktischer Zucker, so dass sie herauszunehmen eine relativ kostenlose Lösung ist?
Was sind die Parameter für 'Klasse C'? Ich denke, das könnte wichtig sein. – chi
Mein Verständnis ist, dass zur Zeit verbundene Typfamilien ziemlich syntaktischer Zucker sind. Ich bin nicht wirklich davon überzeugt, dass sie als solche hinzugefügt worden sein sollten. – dfeuer