I don’t agree that flatMap is more powerful. The power comes from the `f` function, flatMap actually destroys some information in the process of flatting. This forces `f` to include more information in the first place.
So I think the power comes from the function that flatMap requires as the argument not flatMap itself.
Thanks for the nice writeup BTW :)