如何理解Haskell函数参数

时间:2019-09-05 18:20:44

标签: haskell signature

在以下函数定义中:

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

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

1 个答案:

答案 0 :(得分:8)

Application同义词。定义为:

type Application = Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived

因此,它是一个使用Request的函数,以及一个将Response映射到IO ResponseReceived并随后生成IO ResponseReceived的函数。通常,此类函数会产生Response,然后由响应进行后处理。