Я получаю эту ошибку с установкой последней 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
соответствующего типа.
Если здесь нет какой-либо трюки, я в тупике. Как это будет исправлено? Спасибо.
Есть ли способ исправить или обойти это? Из-за этого я только начинаю с Haskell и не могу установить ghc-mod. Что я могу сделать? – jchitel
Ах. Догадаться. Я запускал 'cabal install ghc-mod --constraint = 'monad-control <1.0.0.0'', и он работал. – jchitel