I can\'t figure out what the \"| m -> w\"-part means in a class definition like this:
class (Monoid w, Monad m) => MonadWriter w m | m -> w
It specifies a functional dependency.