如何将逻辑添加到以下“myApp”haskell 函数中?

How do you add logic into the following `myApp` haskell function?

我仍在努力理解 haskell 语法的工作原理。所以,这是一个非常简单的 wai/warp 应用程序。

{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.HTTP.Types (status200)
import Network.Wai.Handler.Warp (run)

myApp _ respond = respond $
    responseLBS status200 [("Content-Type", "text/plain")] "Hello World" 

main = run 3000 myApp 

如果我想在 putStrLn 返回状态 200 和 "Hello World" 纯文本之前将一些文本打印到 stdout 中,如何我会实施吗?

myApp 有这种类型:

myApp :: Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived

因此您可以在返回响应之前添加自己的 IO 操作,如下所示:

myApp _ respond = do putStrLn "processing request"
                     respond $ responseLBS status200 [("Content-Type", "text/plain")] "Hello World"