> -- Just for fun, make it work with StateT as well
> -- (needs -fallow-undecidable-instances)

> instance (Monad (t m), MonadTrans t, MonadPrompt p m) => MonadPrompt p (tm) where
>    prompt = lift . prompt

Looks like that should be MonadPrompt p (t m) rather than (tm).  Note the space.

-Brent