-- | This module defines the 'ValidateT' monad transformer and 'MonadValidate' typeclass. As the
-- names imply, they are intended to be used to write data validators, but they are general enough
-- that you may find other uses for them, too. For an overview of this library’s functionality, see
-- the documentation for 'ValidateT'.
module Control.Monad.Validate (
  -- * The @ValidateT@ monad transformer
    ValidateT
  , runValidateT
  , execValidateT
  , embedValidateT
  , mapErrors

  -- * The @MonadValidate@ class
  , MonadValidate(..)

  -- * Converting between monads
  , exceptToValidate
  , exceptToValidateWith
  , validateToError
  , validateToErrorWith

  -- * The @Validate@ monad
  , Validate
  , runValidate
  , execValidate
  ) where

import Control.Monad.Validate.Class
import Control.Monad.Validate.Internal