2

我正在尝试创建一个Request值并收到以下错误:

ghci> :m +Network.HTTP Network.URI Data.Maybe
ghci> Request { rqURI = fromJust $ parseURI "http://www.google.com", rqMethod = GET, rqHeaders = [], rqBody = ""}

<interactive>:18:19:
    Couldn't match expected type `network-2.3.1.0:Network.URI.URI'
                with actual type `URI'
    In the `rqURI' field of a record
    In the expression:
      Request
        {rqURI = fromJust $ parseURI "http://www.google.com",
         rqMethod = GET, rqHeaders = [], rqBody = ""}
    In an equation for `it':
        it
          = Request
              {rqURI = fromJust $ parseURI "http://www.google.com",
               rqMethod = GET, rqHeaders = [], rqBody = ""}

cabal list network显示以下内容:

* network
    Synopsis: Low-level networking interface
    Default available version: 2.4.0.1
    Installed versions: 2.3.1.0, 2.4.0.1
    Homepage: https://github.com/haskell/network
    License:  BSD3

从 Hackage 的文档中,我相信我创建的 URIparseURINetwork.URI.URI.

我在 OS X Mountain Lion 上运行 Haskell Platform 2012.4.0.0(64 位)。

这是我听说的“阴谋集团地狱”的一个例子吗?

4

1 回答 1

3

您的HTTP包是使用 构建的network-2.3.1.0,但 ghci 加载最新版本,network除非明确告知要使用哪个版本。

所以parseURI返回 aMaybe network-2.4.0.1:Network.URI.URIRequest需要来自 的类型network-2.3.1.0

你可以

  • 使用指定要使用-package的版本的标志调用 ghci , ,network$ ghci -package network-2.3.1.0 other arguments
  • 重建HTTP和所有依赖于它的东西network-2.4.0.1——在这种情况下,重建所有传递依赖的东西可能会更好network-2.3.1.0

这是我听说的“阴谋集团地狱”的一个例子吗?

我还不会称其为“地狱”,但这确实是一个小例子。

于 2012-12-16T14:31:11.657 回答