u    Safe2This is basically specialized 'Either String', or   with error messages.Convert  into another  T. If you don't have proper exception handling in your monad, this can throw errors. GrunExceptional (Failure s) = fail s runExceptional (Success s) = pure s Convert a   to an  :fromMaybe s Nothing = fail s fromMaybe s (Just x) = pure x Convert an  into a  .. This function disregards the error message. :toMaybe (Success x) = Just x toMaybe (Failure _) = Nothing Convert an   to an  :fromEither (Left s) = fail s fromEither (Right x) = pure x Convert an  to an   <toEither (Failure s) = Left s toEither (Success x) = Right xThis is -safe, so to speak. That is, fail = Failure           excep_IraV0BAdRql0Z2K7EoyOtlControl.Exceptional ExceptionalFailureSuccessrunExceptional fromMaybetoMaybe fromEithertoEither$fMonadExceptional$fAlternativeExceptional$fApplicativeExceptional$fFunctorExceptionalbaseGHC.BaseMaybeMonad Data.EitherEitherStringfail