我有一个简单的WAI应用程序(在这个例子中是Warp),它用"Hi“响应所有的web请求。我还希望它在每次处理请求时在服务器上显示"Said hi“。如何在WAI响应处理程序中执行IO?下面是我的应用程序:
{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.HTTP.Types (status200)
import Network.Wai.Handler.Warp (run)
main :: IO ()
main = do
putStrLn "http://localhost:3000/"
run 3000 app
app :: Application
app _ = return hello
hello = responseLBS status200 [("Content-Type", "text/plain")] "Hi"发布于 2011-10-15 01:58:44
WAI应用程序的类型为:
type Application = Request -> Iteratee ByteString IO Response这意味着WAI应用程序通过IO在Iteratee monad转换器中运行,因此您必须使用liftIO来执行常规的IO操作。
import Control.Monad.Trans
app _ = do
liftIO $ putStrLn "Said hi"
return hellohttps://stackoverflow.com/questions/7771523
复制相似问题