úÎÛ Ü      Safe-Inferred2This 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 xA wrapper around &. Encapsulates I/O exceptions in the  monad. This is -safe, so to speak. That is, fail = Failure           exceptional-0.1.5.1Control.Exceptional ExceptionalSuccessFailurerunExceptional fromMaybetoMaybe fromEithertoEitherexceptIO$fMonadExceptional$fAlternativeExceptional$fApplicativeExceptional$fFunctorExceptionalbase Data.MaybeMaybeGHC.BaseMonad Data.EitherEitherStringSystem.IO.Error tryIOErrorfail