所以我正在将我的Haskell项目从LTS 9.21(GHC 8.0.2)更新到LTS 11.12(GHC 8.2.2),并且我现有的一个项目不再正常编译(OS:archlinux)。具体来说,库的测试二进制文件无法编译(测试中的库编译良好)。测试二进制文件似乎找到了两个数据类型声明的实例,这让我觉得可能正在测试的库正在重复?我收到以下错误消息:
• Couldn't match type ‘MyLib-0.2.1.0:MyLib.Foo.BarType’
with ‘BarType’
NB: ‘BarType’
is defined in ‘MyLib.Foo’ in package ‘MyLib-0.2.1.0’
‘MyLib-0.2.1.0:MybLib.Foo.BarType’
is defined in ‘MyLib.Foo’ in package ‘MyLib-0.2.1.0’
Expected type: IO (V.Vector BarType)
Actual type: IO
(V.Vector MyLib-0.2.1.0:MyLib.Foo.BarType)
可能进一步支持我的重复依赖理论是在.stack-work目录下面存在两个带有不同哈希后缀的'MyLib'副本
$ ls .stack-work/dist/x86_64-linux-tinfo6/Cabal-2.0.1.0/build
autogen libHSMyLib-0.2.1.0-GDttEQSehxfEGK2MpHGnkk.a
libHSMyLib-0.2.1.0-KMd8aF0sABi30EkTXjcRNo-ghc8.2.2.so
MyLib-tests libHSMyLib-0.2.1.0-GDttEQSfhxfEFK2MwHGnkk-ghc8.2.2.so
MyLib libHSMyLib-0.2.1.0-KMg8aF0jABi10EkJXjcRNo.a
欢迎任何建议。