-- 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