在构建中包含 tasty-quickcheck 的问题

Trouble including tasty-quickcheck in the build

我是堆栈新手。

我有一个堆栈项目,我想使用 tasty-quickcheck。当我将 tasty-quickcheck 添加到 package.yaml 时,堆栈要求我将其添加到 stack.yaml 以及 extra-deps 部分下。在将 tasty-quickcheck-0.10.1.1 添加到 extra-deps 堆栈后,要求我向我添加的 extra-deps 添加大约十几个包。

现在我正处于尝试执行 stack build.

时出现以下错误的阶段
stack build

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for transformers-compat-0.6.5:
    transformers-0.5.6.2 from stack configuration does not match >=0.3 && ==0.2.* 
needed due to tic-tac-toe-0.1.0.0 -> transformers-compat-0.6.5

Some different approaches to resolving this:

  * Set 'allow-newer: true'
    in /Users/home/.stack/config.yaml to ignore all version constraints and build anyway.


Plan construction failed.

我的 package.yaml 如下所示。

...
dependencies:
- base   >= 4.7 && < 5
- vector
- mtl
- tasty-quickcheck
...

我的 stack.yaml 如下所示。

...
resolver: ghc-8.8.3
extra-deps:
  - vector-0.12.1.2
  - primitive-0.7.0.1
  - tasty-quickcheck-0.10.1.1
  - random-1.1
  - tagged-0.8.6
  - tasty-1.3.1
  - QuickCheck-2.14
  - ansi-terminal-0.10.3
  - async-2.2.2
  - clock-0.8
  - optparse-applicative-0.15.1.0
  - unbounded-delays-0.1.1.0
  - wcwidth-0.0.2
  - ansi-wl-pprint-0.6.9
  - colour-2.3.5
  - hashable-1.3.0.0
  - splitmix-0.0.5
  - transformers-compat-0.6.5
...

我有两个问题。

  1. 如何修复上述错误?
  2. stack 通常会告诉您添加更多依赖项只是为了获得像 tasty-quickcheck 这样的单个包吗?这对我来说听起来不太好。这是大多数包裹的常态吗?

引用评论:

Which resolver (or snapshot) is specified in your stack.yaml?

@duplode 是resolver: ghc-8.8.3

您可能不想在这种情况下使用 ghc-* 解析器。它们仅指定 GHC 版本(以及与 GHC 捆绑在一起的少数软件包的版本),这就是为什么您必须将其他所有内容添加到 extra-deps。将 resolver 更改为 lts-16.0(最新的 Stackage LTS,which does include tasty-quickcheck-0.10.1.1),从 stack.yaml 文件中删除 extra-deps;这应该足以让事情正常进行。