如何理解Haskell函数参数

McB*_*den 2 haskell signature

在以下函数定义中:

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函数似乎没有参数。为什么在上面的示例中有两个参数?

Wil*_*sem 8

Application是类型的同义词。它定义为:

type Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived
Run Code Online (Sandbox Code Playgroud)

因此,它是一个接受a Request的函数,一个将an映射Response到an IO ResponseReceived,然后产生an 的函数IO ResponseReceived。通常,此类函数会产生Response,然后由响应进行后处理。