【问题标题】:Acid-state: MonadState instance for UpdateAcid-state:更新的 MonadState 实例
【发布时间】:2012-06-17 22:55:00
【问题描述】:

我正在尝试acid-statedocumentation 声明 Update stMonadState st 的一个实例。我尝试了不同的东西,但我的编译器不想看到 :( 我尝试了 examples 中的 HelloWorld.hs,但遇到了同样的问题:

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.4, ghc-7.4.2, debian-6.0.5 (amd64)

谢谢, 尤拉斯

添加: 看起来它在 ghc-7.4.1 中有效,在 ghc-7.4.2 中无效。任何人都可以编译器吗?

我尝试重新安装酸状态,但没有帮助。 ghc-7.4.2 中的错误或我的环境 ID 损坏。

【问题讨论】:

    标签: haskell ghc acid-state


    【解决方案1】:

    好的,我终于解决了。

    问题在于安装了两个不同的mtl 版本。隐藏错误可以解决所有问题。

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

    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 完全合格。

    【讨论】:

      猜你喜欢
      • 2017-09-12
      • 2019-10-13
      • 2012-05-14
      • 2010-11-03
      • 2010-10-03
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多