在以下函数定义中:
app :: Application
app _ respond = do
putStrLn "I've done some IO here"
respond $ responseLBS
status200
[("Content-Type", "text/plain")]
"Hello, Web!"
Run Code Online (Sandbox Code Playgroud)
您好,app函数似乎没有参数。为什么在上面的示例中有两个参数?
Application是类型的同义词。它定义为:
type Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceivedRun Code Online (Sandbox Code Playgroud)
因此,它是一个接受a Request的函数,一个将an映射Response到an IO ResponseReceived,然后产生an 的函数IO ResponseReceived。通常,此类函数会产生Response,然后由响应进行后处理。