T15290a.hs:25:12: error: • Couldn't match representation of type: m (Int, IntStateT m a1) with that of: m (Int, StateT Int m a1) arising from a use of ‘coerce’ NB: We cannot know what roles the parameters to ‘m’ have; we must assume that the role is nominal • In the expression: coerce @(forall a. StateT Int m (StateT Int m a) -> StateT Int m a) @(forall a. IntStateT m (IntStateT m a) -> IntStateT m a) join In an equation for ‘join’: join = coerce @(forall a. StateT Int m (StateT Int m a) -> StateT Int m a) @(forall a. IntStateT m (IntStateT m a) -> IntStateT m a) join In the instance declaration for ‘Monad (IntStateT m)’ • Relevant bindings include join :: IntStateT m (IntStateT m a) -> IntStateT m a (bound at T15290a.hs:25:5)