¿Por qué unirse de forma independiente, en lugar de parte de la implementación mínima de la clase de tipos Monad?

Preferiría definir una instancia de Monad a través de la función de unión en lugar de>>= ... A partir de esa equivalencia:

x >>= f = join (fmap f x)

Podría definir una instancia de Monad solo con join?

Hubiera esperado unirme a Monad con:{-# MINIMAL (>>=)| join #-}

Por que esjoin en el nivel superior y ni siquiera en laMonad typeclass?

Respuestas a la pregunta(3)

Su respuesta a la pregunta