1
我想學習Yesod並試圖實現一個簡單的REST應用程序,每次我得到一個GET請求我寫一些東西到一個文件。現在,我有以下處理函數:Haskell Yesod和writeFile
getTestR =
do
return $ writeFile "test.txt" "Just something"
return $ object ["result" .= "Ok"]
我所期待的是,文件test.txt
將被創建,我會獲得一個JSON與{result=Ok}
。但是,我正在獲取JSON,但該文件未被創建。
我猜writeFile
沒有被評估,因爲懶惰的評估,但我不知道如何克服這個問題。提前致謝。
首先刪除'return',看看編譯告訴你的類型......然後找'liftIO';) – Carsten
'return'這裏包裹'IO '計算到你的Yesod-monad中,然後忽略它 - 你可以用簡單的'IO'做這個 - 如果你打開'GHCi'並輸入'return(print「Hello」)'你會看到... * nothing * - 'IO(IO())'只是被忽略 – Carsten
是的,非常感謝您的回答,我沒有回報,因爲這個,我添加了它: – Kabal