Haskell Yesod 和 writeFile

Haskell Yesod and writeFile

我正在尝试学习 Yesod 并尝试实现一个简单的 REST 应用程序,每次我收到 GET 请求时,我都会向文件写入一些内容。现在我有以下处理函数:

getTestR =
  do
    return $ writeFile "test.txt" "Just something"
    return $ object ["result" .= "Ok"]

我期待的是文件 test.txt 将被创建,我将获得 JSON 和 {result=Ok}。但是,我正在获取 JSON,但未创建文件。

我猜 writeFile 没有被评估是因为惰性评估,但我不知道如何解决这个问题。提前致谢。

只需使用 liftIO:

getTestR =
  do
    liftIO $ writeFile "test.txt" "Just something"
    return $ object ["result" .= "Ok"]