我正在使用cabal下载Haskell软件包.
以下作品:
> cabal install JSON
Run Code Online (Sandbox Code Playgroud)
它获取Text.JSON
但是,这失败了:
> cabal install Data.List.Key
cabal: "Data.List.Key" is not valid syntax for a package name or package
dependency.
Run Code Online (Sandbox Code Playgroud)
这里的语法问题是什么?如何让cabal获取Data.List.Key?通常,对于名称XY的包,cabal install需要什么名称才能找到包?(我很困惑为什么cabal install JSON得到Text.JSON,而不是Foobarbaz.JSON)
mig*_*yte 12
该cabal install命令使用包名称.包名称与模块名称不同.如果您查看文本包的hackage页面,您会看到包名称是"text",但它会导出一个名为Data.Text的模块(以及其他模块).包可以导出任意数量的模块,包的名称和它导出的模块的名称之间不必有任何关系.
如果您知道所需的软件包,但不知道导出的模块,请查看该软件包的hackage页面.为此,我在浏览器中访问" http://hackage.haskell.org/package/ ".我已经去过那么多次了,它很快自动完成,然后我将包名添加到该URL的末尾.如果我不知道具体的软件包名称,那么我只需转到该页面并在软件包列表中搜索我想要的内容.
相反的情况,你知道你想要什么模块,但不知道什么包提供它更困难.在这种情况下,我依靠两个精彩的Haskell搜索引擎:Hoogle和Hayoo.