使用Stack构建逆变会导致约束错误,导致无法推断出Contravariant

问题描述 投票:0回答:1

在构建项目时,我收到如下错误:

   /tmp/stack19408/contravariant-1.5/src/Data/Functor/Contravariant/Divisible.hs:233:10: error:
        • Could not deduce (Contravariant (Backwards f))
            arising from the superclasses of an instance declaration
          from the context: Divisible f
            bound by the instance declaration
            at src/Data/Functor/Contravariant/Divisible.hs:233:10-47
        • In the instance declaration for ‘Divisible (Backwards f)’
        |
    233 | instance Divisible f => Divisible (Backwards f) where
        |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

我无法确切地知道这里发生了什么,或者错误是我的结果还是所涉及的库的问题。我做错什么了吗?


我试图创建可能导致此问题的最小项目。在空白Stack项目中,将解析器更改为ghc-8.6.2并添加依赖项:

extra-deps:
- contravariant-1.5
- StateVar-1.1.1.1
- base-4.12.0.0
- array-0.5.2.0

contravariant添加到dependenciespackage.yaml,并在Data.Functor.Contravariant.Divisible中导入Lib.hs。这导致运行stack build时编译错误。

haskell haskell-stack
1个回答
1
投票

这不是你 - 发布的软件包还没有赶上base-4.12。

现在Contravariant类在baseBackwards的实例应该移动到transformers,后者是定义的。有a patch that adds the instances,但我不认为它已被发布到Hackage。

在你的鞋子里,我会:

  1. 在当地结账darcs repo
  2. 将本地结帐添加为extra-dep
  3. 维护者发布transformers的错误
© www.soinside.com 2019 - 2024. All rights reserved.