Real World Haskell の第 15 章では、型クラスが定義されています。
class (Monad m) => MonadSupply s m | m -> s where
数段落後、コンテキストのために >>= と return を定義する必要はないと書かれています。しかし、それが文脈によって何を意味するかについてのこれ以上の説明はありません。
'm' だけが Monad のインスタンスである場合、コンパイラは MonadSupply が Monad のインスタンスであることをどのように認識しますか?