module Monad
( -- * Monad
Monad((>>=), return)
, (=<<)
, (>=>)
, (<=<)
, (<$!>)
, join
, loopM
, unlessM
, whenJustM
, whenM
, whileM
-- ** Newtypes
, Kleisli(..)
-- * MMonad
, MMonad(..)
, squash
, (>|>)
, (<|<)
, (=<|)
, (|>=)
) where
import Control.Arrow (Kleisli(Kleisli, runKleisli))
import Control.Monad (Monad(return, (>>=)), join, (<$!>), (<=<), (=<<),
(>=>))
import Control.Monad.Extra (loopM, unlessM, whenJustM, whenM, whileM)
import Control.Monad.Morph (MMonad(embed), squash, (<|<), (=<|), (>|>), (|>=))