Haskell – Mônadas em GHCi

A execução :i Monadem ghci produz o seguinte:

class Applicative m => Monad (m :: * -> *) where
(>>=) :: m a -> (a -> m b) -> m b
(>>) :: m a -> m b -> m b
return :: a -> m a
fail
:: String -> m a

Além disso, lista as instâncias disponíveis da typeclass Monad:

instance Monad m => Monad (WrappedMonad m)
-- Defined in Control.Applicative
instance
Monad (Either e) -- Defined in Data.Either
instance
Monad [] -- Defined in GHC.Base
instance
Monad Maybe -- Defined in GHC.Base
instance
Monad IO -- Defined in GHC.Base
instance
Monad ((->) r) -- Defined in GHC.Base
instance
Monoid a => Monad ((,) a) -- Defined in GHC.Base

Mais informações sobre mônadas: http://notes.maciejsmolinski.com/2018/02/18/monads-by-example/