Haskell 快照:参数类型错误

Haskell 快照:参数类型错误,haskell,haskell-snap-framework,Haskell,Haskell Snap Framework,我收到以下类型的错误: Couldn't match type `containers-0.5.0.0:Data.Map.Base.Map ByteString [ByteString]' with `M.Map ByteString [ByteString]' Expected type: M.Map ByteString [ByteString] Actual type: Params 但是Params类型是Ma

我收到以下类型的错误:

Couldn't match type `containers-0.5.0.0:Data.Map.Base.Map
                       ByteString [ByteString]'
              with `M.Map ByteString [ByteString]'
Expected type: M.Map ByteString [ByteString]
  Actual type: Params
但是Params类型是Map ByteString[ByteString]

type Params = Map ByteString [ByteString]
如果有任何帮助,这是完整的功能:

import qualified Data.Map as M

categoryDoc :: Params -> Document
categoryDoc params = map (\(k,[v]) -> T.decodeUtf8 k =: T.decodeUtf8 v) $ M.toList params

谢谢。

你遇到了阴谋集团地狱

问题是安装了多个版本的
容器
包。这意味着有两个版本的
Map
数据类型,一个来自
containers-0.5.0.0
,另一个来自另一个版本。这两个不匹配,这就是为什么会出现错误


解决这个问题最简单的方法是删除
~/.ghc
(在unix上)目录并重建所有内容。但这并不能保护你在未来免受此类问题的影响,而且也有可能根本不起作用。所以这不是一个好的解决方案

如果您有至少1.18版的
cabal安装
,您可以使用cabal沙盒功能。这允许您为每个项目创建一个独立的包环境,从而避免此类冲突。只需切换到您的项目并运行:

cabal沙箱初始化#创建一个新沙箱
阴谋集团安装--仅依赖项#安装依赖项
阴谋集团建造#建造你的项目
您还可以使用
cabal install
将项目安装到沙箱中,或使用
cabal repl
为项目启动具有正确设置的GHCi


如果您没有足够新版本的cabal install,并且无法升级,则可以使用来创建和管理沙盒

您是否安装了多个版本的容器?您可以使用
ghc pkg列表容器
进行检查。@bennofs我确实这样做了。我注销了另一个,但仍然得到相同的错误。。。