首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Acid状态:用于更新的MonadState实例

Acid状态:用于更新的MonadState实例
EN

Stack Overflow用户
提问于 2012-06-17 01:30:38
回答 1查看 487关注 0票数 5

我在尝试acid-state文档声明Update stMonadState st的一个实例。我尝试了不同的东西,但我的编译器不想看到:(我尝试了来自示例示例,但是得到了同样的问题:

代码语言:javascript
复制
HelloWorld.hs:26:7:
    No instance for (MonadState
                       HelloWorldState (Update HelloWorldState))
      arising from a use of `put'
    Possible fix:
      add an instance declaration for
      (MonadState HelloWorldState (Update HelloWorldState))
    In the expression: put (HelloWorldState newValue)
    In an equation for `writeState':
        writeState newValue = put (HelloWorldState newValue)

HelloWorld.hs:29:43:
    No instance for (MonadReader
                       HelloWorldState (Query HelloWorldState))
      arising from a use of `ask'
    Possible fix:
      add an instance declaration for
      (MonadReader HelloWorldState (Query HelloWorldState))
    In a stmt of a 'do' block: HelloWorldState string <- ask
    In the expression:
      do { HelloWorldState string <- ask;
           return string }
    In an equation for `queryState':
        queryState
          = do { HelloWorldState string <- ask;
                 return string }

我做错什么了?怎么让它起作用?

我用的是acid-state-0.6.4ghc-7.4.2debian-6.0.5 (amd64)

谢谢你,尤拉斯

补充道:看起来像在ghc-7.4.1中工作,而在ghc-7.4.2中不工作。有谁能同时编译吗?

我试过重新安装酸状态,但没什么用。要么是ghc-7.4.2中的一个bug,要么是我的环境被破坏了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-17 14:55:00

好吧,我终于解决了。

问题是安装了两个不同的mtl版本。藏错了一个解决了一切。

有趣的是我是如何得到它的:)

代码语言:javascript
复制
Prelude Data.Acid Control.Monad.State> :i Update
newtype Update st a
  = acid-state-0.6.4:Data.Acid.Common.Update {acid-state-0.6.4:Data.Acid.Common.unUpdate :: transformers-0.2.2.0:Control.Monad.Trans.State.Lazy.State
                                                                                              st a}
    -- Defined in `acid-state-0.6.4:Data.Acid.Common'
instance Monad (Update st)
  -- Defined in `acid-state-0.6.4:Data.Acid.Common'
instance Functor (Update st)
  -- Defined in `acid-state-0.6.4:Data.Acid.Common'
Prelude Data.Acid Control.Monad.State>

Control.Monad.State重新导出State,但是您可以看到ghci仍然显示transformers-0.2.2.0:Control.Monad.Trans.State.Lazy.State完全合格。

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

https://stackoverflow.com/questions/11068272

复制
相关文章

相似问题

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