module SFML.Utils
(
    err
,   tagErr
)
where


import Control.Exception (Exception, throwIO)


-- | Run the given IO action and throw an error if it fails.
err :: Exception e => IO (Either e a) -> IO a
err = (either throwIO return =<<)


-- | Potentially tag a 'Maybe' value with an error.
tagErr :: e -> Maybe a -> Either e a
tagErr err Nothing  = Left err
tagErr err (Just x) = Right x