From the documentation for Haskell's Monad typeclasshttp://www.haskell.org/ghc/docs/latest/html/base/GHC.Base.html#Monad we see that a monad has these functions:
(>>=) :: m a -> (a -> m b) -> m b (>>) :: m a -> m b -> m b return :: a -> m a fail :: String -> m a
But to create your own monads, you have to define
(>>=) and return. But we
can't talk about this much without learning about typeclasses.