Haskell / Persistent-Sqlite: "Keine Instanz für (Control.Monad.Trans.Resource.MonadResource IO)"

8

Ich habe versucht, eine einfache und intuitive Möglichkeit zu finden, Datenbanken mit Haskell zu verwenden. Ich habe diesen Code aus dem Yesod-Buch genommen und versucht, ihn aufzuräumen, damit er einfacher zu verstehen und zu verwenden ist .

%Vor%

Dieser Code fast funktioniert, aber ich bekomme den folgenden Fehler, den ich nicht beheben konnte.

%Vor%

Irgendwelche Vorschläge, die mich in die richtige Richtung weisen, würden geschätzt.

    
Subtle Array 23.02.2013, 23:49
quelle

1 Antwort

8

Mit

%Vor%

Der Typ von updateDB "Frank Silver" 40 wird als IO () bezeichnet, da dies der Standardtyp für main ist (für einige IO a muss der Typ a eingegeben werden). Aber aus der Definition wird der Typ als MonadRescource m => m a für einige a (wahrscheinlich a = () , aber ich bin mir nicht sicher) abgeleitet, und es gibt keine instance MonadResource IO . Sie benötigen also etwas, um die updateDB in eine IO Aktion zu transformieren, was normalerweise runResourceT ist, was eine ResourceT m a in eine m a (hier m = IO ) umwandelt, also

%Vor%

funktioniert.

    
Daniel Fischer 24.02.2013, 00:13
quelle

Tags und Links