haskell 项目的依赖项

dependencies of a haskell project

如果我 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

是否有关于这里可能发生的事情的解释?

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