我在哪里可以找到 Haskell 的正确包名和版本?

Ser*_*bov 5 haskell haskell-stack

说,我需要System.Eval.Haskell。或者别的什么。我怎么知道我应该在我的文件中指定哪个包package.yaml?当我转到https://hackage.haskell.org/package/plugins-1.5.7/docs/System-Eval-Haskell.html 时,我看不到包名称。

PS“插件”对我不起作用。因此,我认为这是不同的东西。但愿如此 :)


看起来配置中的额外依赖项和“常规”依赖项之间存在一些不太清楚的区别。提到plugins-1.5.7extra-dep 确实有效。我是否在这里做一些依赖管理不善,或者这是绿色的方式?

Mar*_*ann 5

在hackage上查看模块文档时,包名在左上角:

包名突出显示

在这种情况下,它确实是plugins,版本 1.5.7。

当您在.cabal文件中声明依赖项时,Stack 将尝试找到适合您所针对的长期支持(LTS) 集合的版本。

有时,您希望使用与 LTS 集合中可用的版本不同的版本(例如,如果您想要更新的版本),在这种情况下,您可以在 extra-dependencies.


dup*_*ode 4

看起来配置中的额外依赖项和“常规”依赖项之间存在一些相当不清楚的区别。提到plugins-1.5.7额外深度确实有效。我在这里做一些依赖管理不善,还是这是绿色的方法?

事情本来就应该如此。问题是 Haskell 包有两个主要档案:Hackage,它基本上包括每个包和每个版本,以及Stackage,它是 Hackage 的一个大子集,捆绑到相互兼容的包和版本的快照中。Stack 默认从 Stackage 中绘制包,因此如果您想使用 Hackage 中不在 Stackage 中的包,您还必须将其添加到 ofextra-depsstack.yaml包是否在 Stackage 中可以在 Hackage 文档中找到该包的内容页面(如果它在 Stackage 上,则在“Distributions”字段中会有一个条目)。同样相关的是Stackage Hoogle,它允许您在 Stackage 快照中搜索包名称、模块和标识符。

PS:有关 Hackage、Stackage 和 Stack 之间关系的更多信息,您可以看看我的回答Cabal 和 Stack 之间有什么区别?(如果您正在使用“文件”,则可以将其中提到的“文件”替换.cabal为“ ”。)package.yaml