cal3d-0.1: Graphics/Animation/Cal3D/Error.hs
-- Does this need to be exported from Cal3D?
module Graphics.Animation.Cal3D.Error
(Fallible, IOFallible
, checkErrorValue, checkError
)
where
type Fallible a = Either String a -- ???
type IOFallible a = IO (Fallible a) -- ???
-- | Compares the result of an action with a bad value, such as an
-- error code, returns (Left errormessage) if action value == bad,
-- otherwise (Right actionresult)
checkErrorValue :: (Eq a) =>
IO a -- ^ action
-> a -- ^ bad value
-> String -- ^ error message
-> IO (Either String a)
checkErrorValue action bad errmsg = do
{
result <- action
; return (if result == bad
then Left errmsg
else Right result)
}
-- | Like checkError, but returns (Right ()) instead of an interesting value.
checkError :: (Eq a) =>
IO a -- ^ action
-> a -- ^ bad value
-> String -- ^ error message
-> IO (Either String ())
checkError action bad errmsg = do
{
eresult <- checkErrorValue action bad errmsg
; return (case eresult of
Left errmsg -> Left errmsg
Right _ -> Right ())
}