I was trying to make a bridge like this
class MonadStateTF m where
type StateOf m :: *
instance (MonadState s m) =>
MonadStateTF m where
type StateOF m = s
to allow writing constraints on state monads without a dangling type parameter
type NumMonad m = (MonadStateTF m, Num (StateOf m))
Unfortunately, the declaration type StateOF m = s
complains that "s" isn't mentioned on the left hand side rather
than somehow making use of the fundep.
Brandon