haskell项目的依赖关系

时间:2016-12-29 10:41:43

标签: haskell version cabal haskell-stack

如果我stack unpack hakyll-4.9.2.0我在cabal文件中看到

Build-Depends:
    base                 >= 4.8    && < 5,
    ...
  If flag(checkExternal)
    Build-depends:
      http-conduit >= 2.2    && < 2.3,

执行stack init后,所选的解析程序为lts-7.14,其中只包含http-conduit版本2.1.11(cf https://www.stackage.org/lts-7.14/package/http-conduit-2.1.11

然而,它确实编译,并且stack list-dependencies --flag hakyll:checkExternal | grep -i http产生

...
http-conduit 2.1.11

令人惊讶。

当我将解析器更改为stack.yaml中的nightly-2016-12-28时,它显示依赖

$ stack  list-dependencies --flag hakyll:checkExternal | grep -i http
http-conduit 2.2.3

有什么解释可以在这里发生什么?

1 个答案:

答案 0 :(得分:1)

在Stack中,解析程序值完全指定了哪些包可用。更改标志不会以任何方式影响可以使用的软件包版本。