Ich versuche, Jessod zu lernen und zu versuchen, eine einfache REST-App zu implementieren, wo immer ich eine GET Anfrage ich schreibe etwas in eine Datei. Im Moment habe ich die folgende Handler-Funktion:Haskell Yesod und writeFile
getTestR =
do
return $ writeFile "test.txt" "Just something"
return $ object ["result" .= "Ok"]
Was ich erwartet hatte, dass die Datei test.txt
würde erstellt werden, und ich würde einen JSON mit {result=Ok}
erhalten. Ich erhalte jedoch den JSON, aber die Datei wird nicht erstellt.
Ich denke, die writeFile
wird nicht wegen der faulen Bewertung ausgewertet, aber ich habe keine Ahnung, wie dieses Problem zu überwinden. Danke im Voraus.
zuerst die 'return' entfernen und sehen, was der Compiler Sie über die Art erzählt ... dann sucht' liftIO';) – Carsten
'return' hier hüllt die' IO 'Berechnung in Ihre Yesod-Monade und dann einfach ignoriert - Sie können dies in einfachen' IO' tun tun - wenn Sie 'GHCi' öffnen und' return (print "Hallo") eingeben, werden Sie sehen ... * nichts * - 'IO (IO())' wird einfach ignoriert – Carsten
Ja, vielen Dank für Ihre Antwort, ich hatte nicht die Rückkehr, ich habe es aus diesem Grund hinzugefügt: – Kabal