fmap :: (Monad m, Monad n)
  => (m ~> n) -> (IdentityT m ~> IdentityT n)
fmap f m = IdentityT (f (runIdentityT m))
fmap :: (Monad m, Monad n)
  => (m ~> n) -> (IdentityT m ~> IdentityT n)
fmap f m = IdentityT (f (runIdentityT m))
fmap f m = IdentityT (f (runIdentityT m))