Data.Map的冲突版本

时间:2017-03-30 20:19:53

标签: haskell module

我正在使用“交叉点”功能使用此模块Algorithms.Geometry.LineSegmentIntersection.BentleyOttman,该功能返回交点类型的内容,后者又是地图(点2 r)的别名(相关公关)。所以,我尝试使用Data.Map.Lazy模块的相应函数来操作该结果,但是我收到以下错误: 关于如何修复它的任何想法?谢谢!

2 个答案:

答案 0 :(得分:1)

您安装了两个版本的容器包,并最终引用了这两个版本。容器0.5.7.1生成的映射无法从容器0.5.10.1(或任何不匹配的版本)传递给Map消耗函数,即使它们在源代码中的Map定义相同也是如此。

如果不了解有关安装历史的更多信息,则无法确切说明发生这种情况的原因。我猜您只是使用cabal install来根据需要安装软件包,进入默认的用户范围软件包环境?这最终不可避免地导致了这样的问题。

最简单的解决方案是删除整个已安装软件包的存储,然后重新安装所需的所有内容(最好是同时重新安装,而不是多次单独调用cabal install)。

为了防止再次发生这种情况,可以更改您的工作实践以使用cabal sandboxstack等工具,这有助于为每个项目提供单独的包环境。

答案 1 :(得分:1)

在没有更多详细信息的情况下确定无疑可以确定,但我会假设您正在使用堆栈和最新的LTS快照(当我写这篇文章时为8.6)。

可能会发生这种情况,因为LTS 8.6containers-0.5.7.1,并且您正在尝试使用较新版本(containers-0.5.10.1)的功能,但该功能尚未成功从Hackage到Stackage。

要解决此问题,请修改您的stack.yaml文件以包含:

extra-deps:
- containers-0.5.10.1