¿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?