我想和Pong.hs一起玩。我下载了Graphics.Gloss
文件,但当我在Sublime Text(使用Haskell插件)中打开它时,我被告知Graphics.Gloss.Interface.Pure.Game
和> cabal install Graphics.Gloss
丢失了。
Graphics.Gloss
无法找到Gloss
。 Hoogle找到了它。该文件中的一条评论提到了编译> cabal install Gloss
。所以我试过
Pong.hs:22:1: error:
Failed to load interface for ‘Graphics.Gloss’
Use -v to see a list of the files searched for.
Pong.hs:23:1: error:
Failed to load interface for ‘Graphics.Gloss.Interface.Pure.Game’
Use -v to see a list of the files searched for.
成功了 - 虽然我不明白为什么。 Sublime Text插件也很开心。但是当我尝试将代码加载到WinGHCi中时,我得到了
{{1}}
我很欣赏有关下一步尝试的建议。
感谢。
答案 0 :(得分:4)
首先,一些背景:Graphics.Gloss
是模块的名称 - 命名代码片段的集合。 gloss
是包的名称 - 模块的集合。 cabal install
接受包名称并将该包安装到包数据库中 - 包的集合。
现在我们有了讨论你所观察到的内容以及如何取得进展所需的词汇。
cabal install Graphics.Gloss
找不到Graphics.Gloss
是的,Graphics.Gloss
是一个模块,而不是一个包。 gloss
包提供了该模块。我不知道将模块名称映射到提供它们的软件包的可靠工具,但Hoogle和Hayoo都会告诉您与其任何搜索结果相关联的软件包名称。 (我不认为它们是“可靠的”,因为它们仅为Hackage的一部分编制索引。)
cabal install Gloss
成功了
虽然程序包名为gloss
而不是Gloss
,但cabal install
尝试做正确的事情,如果代理程序包仅在大小写上有所不同,则会安装代理程序包。
当我尝试将代码加载到WinGHCi中时,我收到了[错误]
我敢打赌,Sublime Text和WinGHCi正在使用不同的包数据库;例如,也许你正在使用cabal沙箱,而Sublime Text已经选择了它。您可以尝试运行这两个命令并比较它们的输出:
cabal sandbox hc-pkg list gloss
ghc-pkg list gloss
请注意,前者在从不同目录和不同环境中运行时的行为会有所不同,因此请务必使用与运行cabal install Gloss
相同的步骤来运行它!
如果已在沙箱中安装了光泽,则第一个命令应显示与该沙箱关联的包数据库的位置以及安装在其中的光泽库的版本。第二个应该没有结果。如果是这种情况,您可以尝试使用适合沙箱的环境运行WinGHCi;例如,像
cabal exec winghci
应该做的伎俩(如果winghci
是启动WinGHCi的命令 - 这里没有Windows框,所以我不确定)。同样,在正确的目录中设置正确的环境变量对于此命令起作用很重要,因此请确保按照运行cabal install Gloss
和先前的包数据库查询所执行的相同步骤运行它。