0

http-conduit 2.0+ 版本中,我想创建一个自定义的Manager.

文档说明defaultManagerSettings应该在newManager.

import Network.HTTP.Conduit
main = do manager <- newManager defaultManagerSettings
          print $ content

但是,当尝试运行它时,我收到以下错误:

conduittest.hs:3:33:
    Not in scope: `defaultManagerSettings'
    Perhaps you meant `conduitManagerSettings' (imported from Network.HTTP.Conduit)

我要conduitManagerSettings改用吗?如果没有,我可以defaultManagerSettings从哪里导入?

注意:这个问题故意不显示进一步的研究工作,因为它立即以问答式的方式得到了回答。

4

1 回答 1

0

newManager如文档中所列,您可以像这样导入defaultManagerSettings

import Network.HTTP.Client (defaultManagerSettings)

让我们看看是什么conduitManagerSettings

conduitManagerSettings :: ManagerSettings
conduitManagerSettings = tlsManagerSettings

Network.HTTP.Client.TLS中,tlsManagerSettings定义如下:

tlsManagerSettings :: ManagerSettings
tlsManagerSettings = mkManagerSettings def Nothing

好的,所以这里没有什么特别的。def来自Data.Default模块,因此定义了默认实例。但是defaultManagerSettings指定所有默认值。

我无法找到住所的位置instance Default ManagerSettings。但是我认为可以安全地假设它mkManagerSettings def Nothing具有与defaultManagerSettings.

我个人建议使用defaultManagerSettings,因为这些行为中的任何一个都可能在未来发生变化。

于 2014-01-24T16:30:36.887 回答