Dauerhaft: CRUD TypeClass

9

Ich versuche, eine Typklasse zu schreiben, die das Schreiben eines CRUD-Backends mit persistent , aeson und sotty

vereinfacht

Hier ist meine Idee:

%Vor%

Dies kompiliert nicht, ich bekomme diesen Fehler:

%Vor%

Es sieht so aus, als müsste ich eine weitere Typ-Einschränkung hinzufügen, etwas wie PersistMonadBackend m ~ PersistEntityBackend a , aber ich sehe nicht wie.

    
agrafix 11.04.2013, 09:50
quelle

1 Antwort

1

Die Einschränkung bedeutet, dass der zugehörige Backend-Typ für PersistEntity muss Instanz SqlBackend sein. Wenn ein Benutzer die PersistEntity -Klasse als Teil der Implementierung der CRUD -Klasse implementiert, müssen sie dies angeben.

Aus Ihrer Sicht müssen Sie nur die Erweiterung TypeFamilies aktivieren und diese Einschränkung zu Ihrer Klassendefinition hinzufügen:

%Vor%

Wenn eine Instanz von PersistEntity für einen Typ Foo definiert wird, muss der Benutzer von CRUD den Typ PersistEntityBackend als SqlBackend definieren:

%Vor%

Hier ist meine vollständige Kopie Ihres Codes, der den GHC-Typ-Checker besteht:

%Vor%     
Ganesh Sittampalam 04.01.2014 15:13
quelle

Tags und Links