You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找Haskell正确包名及版本?以System.Eval.Haskell为例

搞定你的Haskell包配置困惑

嘿,我来帮你理清这两个头疼的Haskell配置问题:

一、先搞清楚System.Eval.Haskell属于哪个包

你没看错,System.Eval.Haskell确实是plugins包的一部分——你访问的文档页面就是这个包的1.5.7版本。如果直接写plugins无效,大概率是版本指定的问题:这个版本是2019年的,比较旧,可能不在你当前用的Stackage快照里,所以得明确写版本号才行。

在package.yaml里这么配置就对了:

dependencies:
  - base >= 4.7 && < 5
  - plugins == 1.5.7

要是这个版本不在你的Stackage快照索引里,就得把它加到extra-dependencies里——这正好关联到你第二个疑问。

二、常规依赖和extra-dependencies到底差在哪

一句话说清:核心差异是看包在不在当前Stackage快照的收录范围内:

  • 常规dependencies:这里列的包必须是你项目用的Stackage快照(比如lts-20.x这类)里收录的。Stack会自动从快照镜像拉取,还能保证版本兼容,一般不用写版本号(除非你想强制用某个特定版本)。
  • extra-dependencies:专门用来加那些不在当前快照里的包,或者你需要用快照以外的特定版本(比如你要的plugins-1.5.7)。这些包直接从Hackage拉取,必须明确写版本号。

举个实际例子:如果你的项目用的是新的LTS快照,而plugins-1.5.7不在里面,那就在stack.yaml里添加:

extra-dependencies:
  - plugins-1.5.7

同时package.yaml的dependencies里保留plugins == 1.5.7,Stack就能正确拉取这个版本了。

三、要是还不行,试试这几个排查点

如果按上面配置还是报错,可以检查:

  • 去Stackage官网查一下你用的resolver快照里有没有plugins-1.5.7,确认是不是真的不在快照里。
  • 看stack build的报错信息,如果是版本冲突,要么调整base的版本范围,要么试试plugins的新版本(比如1.6.1,看看和你的base版本兼容不)。

内容的提问来源于stack exchange,提问作者Zazaeil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:48:36