一年来,我一直是新手哈斯克勒(我认为,“新秀哈斯克勒”)。我编写了很少的haskell程序(例如,一个非常简单的蛇游戏)但是当我必须使用某些库时,包依赖和ghc失败的版本对我来说很难。
我认为选择正确的ghc版本是一门艺术。
太新了,库失败了(例如,yesod最近更新到7.4; grapefruit-ui-gtk目前失败了。)
太旧了,库已经过时但不受支持。
HackageDB及其开发者非常棒,但我觉得笨拙并且不知道开发一个严肃程序的正确方法。
我必须做什么?我是不是很缺乏经验?艰难的方式是唯一的方式吗?
(对不起,如果问题太笼统)
答案 0 :(得分:8)
存在标准化每6个月期间GHC的稳定释放,因此您不必猜测使用哪种GHC。
答案 1 :(得分:5)
我认为你所描述的问题与缺乏经验有关。这只是发生的事情。一些建议:
作为一般规则,在您知道所依赖的所有软件包都支持新版本之前,请不要升级您的Haskell平台(或ghc)。如果你想要最新的和最好的,你可以并排运行多个版本的平台,但也需要使用旧版本。
联系维护人员,询问他们何时升级包裹。十分之九,他们需要做的就是修改cabal文件,重新编译并重新上传。要查找他们的电子邮件地址,请搜索hackage以获取包名称,并在横幅中查找“Maintainer”一词。
作为一种肮脏的解决方法:您可以尝试自己修改cabal文件(将“.1”添加到程序包版本号的末尾以避免版本冲突,并更新所需的基本版本号),然后看它是否编译。我已经成功完成了几次,然后使用GitHub或者他们正在使用的任何内容向维护者发送了更新。