3

I'm getting this error from installing the latest ghc-mod (5.2.1.1) from Hackage in a sandbox:

[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

I've never seen this error before, so I went digging. In Language/Haskell/GhcMod/Monad.hs, sure enough it's doing something funny:

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

If you look at monad-control on Hackage, there is no such StM associated newtype, but only an StT associated type.

Unless there's some other type trickery going on here, I'm stumped. How would this be fixed? Thank you.

Athan Clark
  • 3,886
  • 2
  • 21
  • 39

1 Answers1

3

Scratch this, my eyes are fooling me. My mistake, since monad-control-1.x, MonadControl has had an associated type instead of an associated data type, as explained here.

Athan Clark
  • 3,886
  • 2
  • 21
  • 39
  • Is there a way to fix or work around this? I'm just getting started with Haskell and can't install ghc-mod because of this. What can I do? – jchitel Dec 28 '14 at 23:25
  • 4
    Ah. Figured it out. I ran `cabal install ghc-mod --constraint='monad-control < 1.0.0.0'` and it worked. – jchitel Dec 28 '14 at 23:51