我把这个链接放进了一个文件中(见底部),在ghci中加载它时出现了以下错误(即启动ghci然后执行:l file
):
7:13: error:
• Couldn't match expected type ‘network-uri-2.6.1.0@network-uri-2.6.1.0-7BN1tbB3iHQ2XgvmqLAYph:Network.URI.URI’
with actual type ‘Network.URI.URI’
NB: ‘Network.URI.URI’
is defined in ‘Network.URI’
in package ‘network-uri-2.6.1.0@network-uri-2.6.1.0-80FpvaNUTSDFCPv0sSze40’
‘network-uri-2.6.1.0@network-uri-2.6.1.0-7BN1tbB3iHQ2XgvmqLAYph:Network.URI.URI’
is defined in ‘Network.URI’
in package ‘network-uri-2.6.1.0@network-uri-2.6.1.0-7BN1tbB3iHQ2XgvmqLAYph’
我是否安装了两个略有不同版本的network-uri呢?我该如何解决这个问题呢?
我几乎没用过cabal,但尝试了cabal install --reinstall network-uri
,安装过程很顺利,但问题仍然存在。
文件内容:
import Network.HTTP
import Network.URI (parseURI)
import Data.Maybe (fromJust)
myRequestURL = "http://www.virginia.edu/cgi-local/ldapweb"
myRequest :: String -> Request_String
myRequest query = Request {
rqURI = fromJust $ parseURI myRequestURL
, rqMethod = POST
, rqHeaders = [ mkHeader HdrContentType "text/html"
, mkHeader HdrContentLength $ show $ length body ]
, rqBody = body
}
where body = "whitepages=" ++ query
main :: IO ()
main = do
response <- simpleHTTP $ myRequest "poon"
putStrLn ""
编辑 重新安装了haskell平台。此后,ghc-pkg list
报告所有软件包都位于/usr/lib/ghc/package.conf.d
下,并且我尝试复制的程序可以很好地加载。
编辑2 运行cabal install some-pkg
后,ghc-pkg list
报告新安装的内容在另一个目录中。实际上,~/.cabal/config
为用户指定了安装目录以及全局安装目录。如何正确管理所有这些内容?
ghc-pkg list
输出了什么? - HTNW/usr/lib/ghc/package.conf.d network-uri-2.6.1.0 ... /home/evesterl/.ghc/x86_64-linux-8.0.2/package.conf.d network-uri-2.6.1.0
,我猜那可能与问题有关?不过我不知道如何解决它(或者我是怎么陷入这个困境的)。 - Erik Vesterlund