My definition of flatten would be:
m m a -> m a
Definitely not arbitrary but maybe not useful for many monads (??)
Definitely not arbitrary but maybe not useful for many monads (??)
So in a sense yes it's "just" this function that could do anything following the signature.
But now you're in the same place you already were, looking at a simple type signature with massive hidden implications, and if you treat it like a list you'll miss those implications.
"flatmap generalized to a vast field of dissimilar types" is much more complicated than just "flatmap"