gpt4 book ai didi

haskell - 用于沙箱的最小 cabal 文件

转载 作者:行者123 更新时间:2023-12-02 02:08:05 26 4
gpt4 key购买 nike

我正在尝试使用 Hakyll 编写一个项目图书馆。为了避免弄乱我的系统,我将其安装在 Cabal 沙箱中,位于我的 Hakyll 项目所在的同一文件夹中。

作为一个或多或少的初学者,我仍然在努力寻找正确的害虫防治方法。一个简单的方法就是这样做

$ cabal sandbox init
$ cabal install hakyll
$ cabal exec ghc -- --make site.hs

最后一行使用沙箱中的库编译我的 Hakyll 生成器。明显的缺点是这是不可重现的。当我尝试从干净的 checkout 中再次运行 Hakyll 时,Hakyll 的主要版本可能会发生变化。

另一种方法是编写适当的 project.cabal 文件(例如: chromaticleaves.cabal ),然后执行 cabal installcabal run .

但是,我觉得这可能有点太多信息了。由于我不打算发布超出需要的项目,因此我不太确信需要在其中放置项目名称和版本号。 (例如,在 Ruby Gemfile 中,我也只会指定库而不指定其他内容,除非我想自己发布 gem。)

所以,最终我发现像这样的文件

$ cat project.cabal
cabal-version: >= 1.2
library
build-depends: base >=4.6
, containers
, process
, hakyll >=4.5
, pandoc
, pandoc-types

我可以打字

$ cabal sandbox init
$ cabal install --only-dependencies
$ cabal exec ghc -- --make site.hs

它似乎下载了所有依赖项并且能够编译该文件。

这是一种合理的方法,还是在 cabal 文件中提供包含名称、版本和可执行部分的完整规范的最佳实践?

编辑:显然,我的方法不允许我进行cabal repl。因此,要么存在完全不同的方法,要么我似乎必须采用更完整的规范。

最佳答案

我自己将您的第一种方法用于我的基于 Hakyll 的网页。您不需要创建 .cabal 文件来固定 Hakyll 版本,只需将以下行添加到 cabal.config:

约束:hakyll == 4.5

我认为 cabal repl 可以使用这种方法,但您需要手动加载 site.hs (:l site.hs)。或者您可以使用cabal exec ghci -- site.hs

关于haskell - 用于沙箱的最小 cabal 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com