Кислотное состояние: экземпляр MonadState для обновления
Я пытаюсь acid-state
, В документации говорится, что Update st
это пример MonadState st
, Я пробовал разные вещи, но мой компилятор не хочет видеть это:(Я попробовал 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, либо мой идентификатор среды не работает.
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
Полностью квалифицированный.