Skip to content

Error in 'lift' line causes the 'impossible' to happen

import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Maybe (MaybeT)

foo :: MaybeT IO ()
foo = lift putStrLn "foo"

This code caused the following output from GHC:

Couldn't match kind `* -> *' with `*'
    Expected type: [Char] -> MaybeT IO ()
      Actual type: [Char] -> MaybeT IO ()
    Kind incompatibility when matching types:
      [Char] :: * -> *
      [Char] :: *
    The function `lift'ghc: panic! (the 'impossible' happened)
  (GHC version 7.6.3 for x86_64-unknown-linux):
	kindFunResult
<<details unavailable>>

The line should of course be lift $ putStrLn "foo". Apologies if this is a duplicate bug.

Edited by Simon Peyton Jones
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information