This code is is based upon a post by Oleg athttp://www.haskell.org/pipermail/haskell-cafe/2004-October/007160.html.{-# OPTIONS -fglasgow-exts #-}import Control.Monad.Transdata Bar m = forall t. (MonadTrans t, Monad (t m)) => Bar (t m () -> m ()) (t m Int)data Foo = Foo (forall m. Monad m => Bar m)runProg (Foo (Bar run op)) = run $ prog opprog op = do lift $ putStrLn "Running prog" return ()data ABC = A instance Show ABC where show A = "A"main = putStrLn $ show AIt seems to be nearly minimal, though I have no ideawhy. When I compile with ghc 6.2.1 from Debianunstable, I get% ghc try.hsghc-6.2.1: panic! (the `impossible' happened, GHCversion 6.2.1): cgPanic zddMonad {- v aGa -} static binds for: local binds for: Main.prog {- v rz -} show {- v rJG -} SRT labelghc-6.2.1: panic! (the `impossible'happened, GHC version 6.2.1): initC: srt