-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Composable, hierarchical errors. -- -- An Applicative Functor with error accumulation. Built in tree like -- error type meant for gathering and reporting errors to users. @package error-or @version 0.1.0.0 -- | Provides composable and hierarchical errors, with pretty printing. The -- errors are accumulated in a tree like structure, ErrorAcc. -- ErrorAcc is disigned to be read by humans, via pretty, -- not dispatched on by code. Using toE to convert an -- ErrorOr to IO throws (in case it holds an error) a -- PrettyErrAcc that uses pretty in the show instance. module Data.ErrorOr -- | Use 'Applicative'\'s sequenceA and sequenceA_ to -- compose ErrorOrs as opposed to Monad derived functions -- like sequence. newtype ErrorOr a ErrorOr :: Either ErrorAcc a -> ErrorOr a [errorOrToEither] :: ErrorOr a -> Either ErrorAcc a -- | Could be defined as 'err = fail . Text.pack' err :: Text -> ErrorOr a -- | Annotate the error with context information. tag :: Text -> ErrorOr a -> ErrorOr a pattern Error :: ErrorAcc -> ErrorOr a pattern OK :: a -> ErrorOr a isOK :: ErrorOr a -> Bool isError :: ErrorOr a -> Bool -- | Like fromRight fromOK :: ErrorOr a -> a -- | Convert between functors that hold error info. class ErrorConv t s toE :: ErrorConv t s => t a -> s a data ErrorAcc Message :: Text -> ErrorAcc List :: Seq ErrorAcc -> ErrorAcc Tag :: Text -> ErrorAcc -> ErrorAcc -- | Pretty print the error. pretty :: Int -> ErrorAcc -> Text -- | A wrapper over ErrorAcc to provide human readable exceptions. -- (Exception class' displayException does not seem to be used by GHC) -- https://stackoverflow.com/questions/55490766/why-doesn-t-ghc-use-my-displayexception-method newtype PrettyErrAcc PrettyErrAcc :: ErrorAcc -> PrettyErrAcc [unPrettyErrAcc] :: PrettyErrAcc -> ErrorAcc instance Data.Traversable.Traversable Data.ErrorOr.ErrorOr instance Data.Foldable.Foldable Data.ErrorOr.ErrorOr instance GHC.Base.Functor Data.ErrorOr.ErrorOr instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.ErrorOr.ErrorOr a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.ErrorOr.ErrorOr a) instance GHC.Read.Read a => GHC.Read.Read (Data.ErrorOr.ErrorOr a) instance GHC.Show.Show a => GHC.Show.Show (Data.ErrorOr.ErrorOr a) instance GHC.Classes.Ord Data.ErrorOr.ErrorAcc instance GHC.Classes.Eq Data.ErrorOr.ErrorAcc instance GHC.Read.Read Data.ErrorOr.ErrorAcc instance GHC.Show.Show Data.ErrorOr.ErrorAcc instance Data.ErrorOr.ErrorConv Data.ErrorOr.ErrorOr GHC.Types.IO instance Data.ErrorOr.ErrorConv GHC.Maybe.Maybe Data.ErrorOr.ErrorOr instance GHC.Show.Show Data.ErrorOr.PrettyErrAcc instance GHC.Exception.Type.Exception Data.ErrorOr.PrettyErrAcc instance GHC.Base.Applicative Data.ErrorOr.ErrorOr instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Data.ErrorOr.ErrorOr a) instance (GHC.Base.Semigroup (Data.ErrorOr.ErrorOr a), GHC.Base.Monoid a) => GHC.Base.Monoid (Data.ErrorOr.ErrorOr a) instance GHC.Base.Monad Data.ErrorOr.ErrorOr instance Control.Monad.Fail.MonadFail Data.ErrorOr.ErrorOr instance GHC.Base.Semigroup Data.ErrorOr.ErrorAcc