在以下函数定义中:
app :: Application
app _ respond = do
putStrLn "I've done some IO here"
respond $ responseLBS
status200
[("Content-Type", "text/plain")]
"Hello, Web!"
你好,app函数似乎没有参数。为什么在上面的示例中有两个参数?
答案 0 :(得分:8)
Application
是同义词。定义为:
type Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived
因此,它是一个使用Request
的函数,以及一个将Response
映射到IO ResponseReceived
并随后生成IO ResponseReceived
的函数。通常,此类函数会产生Response
,然后由响应进行后处理。