2014-12-24 3 views
3

Я получаю эту ошибку с установкой последней GHC-мод (5.2.1.1) из Hackage в песочнице:GHC-мод ожидал MonadBaseControl иметь `StM` связаны NewType вместо` StT` связанного типа

[15 of 38] Compiling Language.Haskell.GhcMod.CabalConfig (Language/Haskell/GhcMod/CabalConfig.hs, dist/dist-sandbox-94286619/build/Language/Haskell/GhcMod/CabalConfig.o) 
[16 of 38] Compiling Language.Haskell.GhcMod.CabalApi (Language/Haskell/GhcMod/CabalApi.hs, dist/dist-sandbox-94286619/build/Language/Haskell/GhcMod/CabalApi.o) 
[17 of 38] Compiling Language.Haskell.GhcMod.Cradle (Language/Haskell/GhcMod/Cradle.hs, dist/dist-sandbox-94286619/build/Language/Haskell/GhcMod/Cradle.o) 
[18 of 38] Compiling Language.Haskell.GhcMod.Monad (Language/Haskell/GhcMod/Monad.hs, dist/dist-sandbox-94286619/build/Language/Haskell/GhcMod/Monad.o) 

Language/Haskell/GhcMod/Monad.hs:370:5: 
    Wrong category of family instance; declaration was for a type synonym 
    In the newtype instance declaration for ‘StM’ 
    In the instance declaration for ‘MonadBaseControl IO (GhcModT m)’ 
cabal: Error: some packages failed to install: 
ghc-mod-5.2.1.1 failed during the building phase. The exception was: 
ExitFailure 1 

Я никогда не видел эту ошибку раньше, поэтому я пошел копать. В Language/Haskell/GhcMod/Monad.hs, достаточно уверенный, что он делает что-то смешное:

instance (MonadBaseControl IO m) => MonadBaseControl IO (GhcModT m) where 
    newtype StM (GhcModT m) a = StGhcMod { 
      unStGhcMod :: StM (StateT GhcModState 
           (ErrorT GhcModError 
           (JournalT GhcModLog 
            (ReaderT GhcModEnv m)))) a } 
    liftBaseWith f = GhcModT . liftBaseWith $ \runInBase -> 
     f $ liftM StGhcMod . runInBase . unGhcModT 

Если посмотреть на at monad-control Hackage, там нет такогоStM связан Newtype, но только StT соответствующего типа.

Если здесь нет какой-либо трюки, я в тупике. Как это будет исправлено? Спасибо.

ответ

3

Поцарапайте это, мои глаза обманывают меня. Моя ошибка, поскольку monad-control-1.x, у MonadControl был связанный тип, а не связанный с ним тип данных, как объяснено here.

+0

Есть ли способ исправить или обойти это? Из-за этого я только начинаю с Haskell и не могу установить ghc-mod. Что я могу сделать? – jchitel

+4

Ах. Догадаться. Я запускал 'cabal install ghc-mod --constraint = 'monad-control <1.0.0.0'', и он работал. – jchitel