说,我需要System.Eval.Haskell
。或者别的什么。我怎么知道我应该在package.yaml
中指定哪个包?当我转到https://hackage.haskell.org/package/plugins-1.5.7/docs/System-Eval-Haskell.html时,我看不到包裹名称。
P.S。 “插件”对我不起作用。因此,我认为它是不同的东西。我希望如此:)
看起来配置中的额外依赖性和“常规”依赖关系之间存在一些相当不明显的区别。提及plugins-1.5.7
作为extra-dep确实有效。我在这里做了一些依赖管理不善,或者那是绿色的方式吗?
答案 0 :(得分:3)
看起来配置中的额外依赖性和“常规”依赖关系之间存在一些相当不明显的区别。提及
plugins-1.5.7
作为extra-dep确实有效。我在这里做了一些依赖管理不善,或者那是绿色的方式吗?
应该是这样的。问题是Haskell软件包有两个主要档案: Hackage ,它基本上包括每个软件包和每个版本,以及 Stackage ,它是Hackage捆绑的一个大子集到相互兼容的包和版本的快照。堆栈默认为从Stackage绘制包,因此如果您想使用Hackage中不在Stackage中的包,您还必须将其添加到extra-deps
的{{1}}。是否在Stackage中的包可以找到contents page of the package in the Hackage docs(如果它在Stackage上,它将在“Distributions”字段中有一个条目)。同样相关的是Stackage Hoogle,它允许您在Stackage快照中搜索包名称,模块和标识符。
PS:有关Hackage,Stackage和Stack之间关系的更多信息,您可以查看我对What is the difference between Cabal and Stack?的回答(您可以将“stack.yaml
文件”的任何提及替换为“ .cabal
“,如果你正在使用它。”
答案 1 :(得分:2)
当您查看有关hackage的模块文档时,包名称位于左上角:
在这种情况下,确实是插件,版本1.5.7。
当您在html,
body {
margin: 0px;
padding: 0px;
outline-offset: 0px;
background-color: #FFEAE5;
}
.mainTitle {
display: inline;
}
.logo2 {
display: inline;
color: #FFEAE5;
font-size: 18px;
font-style: italic;
}
.logo1 {
font-family: Gotham, "Helvetica Neue", Helvetica, Arial, sans-serif;
display: inline;
color: #FFEAE5;
}
.top1 {
padding: 5px;
padding-top: 3px;
padding-left: 25px;
background-color: #F87666;
}
文件中声明依赖项时,Stack会尝试查找适合您所定位的Long-Term Support(LTS)集合的版本。
有时,您希望使用与LTS集合中可用的版本不同的版本(例如,如果您想要更新的版本),在这种情况下,您可以在{{1}中定义软件包及其特定版本}}
答案 2 :(得分:1)
说,我需要System.Eval.Haskell。或者别的什么。我怎么知道我应该在package.yaml中指定哪个包?
可能有许多软件包导出特定模块,因此您无法知道从模块名称导入哪个软件包。但一般来说,谷歌搜索显而易见。
正如duplode提到的那样,包被命名为plugins
,并且您发现堆栈使用<package_name>-<version>
格式在stack.yaml
中指定包名+版本。 Cabal使用不同的格式,更灵活(可以指定模糊包版本范围等)。由于堆栈适用于包版本的固定快照,因此plugins-1.5.7
格式就足够了。
当您在plugins
文件中写下*.cabal
时,您指定的内容类似于&#34;任何版本的plugins
,但更喜欢最新的&#34;。但是,因为您的软件包存储库仅限于stack
的特定快照,您真正要做的就是让stack
管理您的依赖项。