如何理解Haskell函数参数

How to understand Haskell function parameters

在下面的函数定义中:

app :: Application
app _ respond = do
    putStrLn "I've done some IO here"
    respond $ responseLBS
        status200
        [("Content-Type", "text/plain")]
        "Hello, Web!"

您好,app 函数似乎没有参数。为什么在上面的例子中有两个参数?

Application是一种同义词。它被定义为:

<b>type</b> Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived

因此,它是一个接受 Request 的函数,以及一个将 Response 映射到 IO ResponseReceived,然后生成 IO ResponseReceived 的函数。通常这样的函数会产生一个 Response 然后由响应 post 处理。