首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Acid-State示例编译错误。No No instance for (Control.Monad.Reader.Class.MonadReader FailureDb (Query FailureDb))

Acid-State示例编译错误。No No instance for (Control.Monad.Reader.Class.MonadReader FailureDb (Query FailureDb))
EN

Stack Overflow用户
提问于 2018-08-31 12:05:35
回答 1查看 71关注 0票数 1

我正在尝试acid example,但是编译错误。

The error message说是no instance No instance for MonadState, No instance for MonadReader

This article表示,这是由于安装了两个不同的mtl版本。

我在nixos中使用nix-shell:

代码语言:javascript
复制
ghc-pkg list | grep acid
    acid-state-0.14.3

ghc-pkg list | grep mtl
    mtl-2.2.1
    mtl-2.2.2

但是,如果我在进入nix-shell时没有使用acid-state包,我会得到:

代码语言:javascript
复制
ghc-pkg list | grep mtl
    mtl-2.2.2

这可能意味着acid-state使用的是与Control.Monad.Reader不同的mtl版本。

但是github中的acid-state的stack.yaml是lts-11.15,其mtl-2.2.2。

那么我应该怎么做才能让它工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 16:48:33

在处理GHC的dbs包时,Stack和Cabal-install也有类似的问题,但这些问题是可以避免的:

堆栈

当我使用Stack时,我不会在nix-shell中运行它,所以nix-shell不能将包添加到封装的GHC命令中,然后Stack会认为它是系统包(在Cabal术语中是‘global’)。不过,我不确定这是否是唯一有效的方法。

Cabal-仅安装

在nix-shell中调用Cabal时,您应该添加这些标志,以防止GHC查看错误的包db:cabal configure --package-db=clear --package-db=global。GHC包装器将使Nix管理的依赖项出现在'global‘包db中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52108291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档