module Control.Monad.Classes ( -- * State MonadState , state , get , put , modify , modify' , gets -- * Reader , MonadReader , MonadLocal , ask , local -- * Writer , MonadWriter , tell -- * Exceptions , MonadExcept , throw -- * Exec , MonadExec , exec -- * Core classes and types -- ** Generic lifting , MonadLiftN(..) -- ** Effects , module Control.Monad.Classes.Effects -- ** N-classes , Peano(..) , MonadStateN(..) , MonadReaderN(..) , MonadLocalN(..) , MonadWriterN(..) , MonadExceptN(..) , MonadExecN(..) -- ** Type families -- | You should rarely need these. They are exported mostly for -- documentation and pedagogical purposes. , Find , FindTrue , MapCanDo , CanDo ) where import Control.Monad.Classes.Effects import Control.Monad.Classes.Core import Control.Monad.Classes.State import Control.Monad.Classes.Reader import Control.Monad.Classes.Writer import Control.Monad.Classes.Except import Control.Monad.Classes.Exec import Data.Peano (Peano (..))