繁体   English   中英

无法在Haskell中加载Graphics.Gloss

[英]Can't load Graphics.Gloss in Haskell

我想和Pong.hs一起玩。 我下载了.hs文件,但是当我在Sublime Text(带有Haskell插件)中打开它时,被告知Graphics.GlossGraphics.Gloss.Interface.Pure.Game丢失了。

> cabal install Graphics.Gloss

找不到Graphics.Gloss Hoogle为我找到了它。 文件中的注释之一提到了编译Gloss 所以我尝试了

> cabal install Gloss

成功了-尽管我不明白为什么。 Sublime Text插件也很高兴。 但是当我尝试将代码加载到WinGHCi时,我得到了

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.

非常感谢您提出下一步建议。

谢谢。

首先,了解一些背景信息: 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使用不同的软件包数据库; 例如,也许您使用的是阴谋集团沙箱,而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和先前的软件包数据库查询相同的步骤运行它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM