背景
我正在使用由一堆变压器组成的单子,其中一个是 ErrorT。因此,我的 monad 实现了MonadError
该类并且throwError
是一个有效的语句。我只想在满足特定条件时抛出错误。我倾向于做以下事情:
if badCondition
then throwError "You did a bad, bad thing..."
else return ()
doGoodThings
[...]
在看这个时,我认为我什至可以将其概括为以下内容:
throwErrorWhen :: (MonadError e m) => Bool -> e -> m ()
throeErrorWhen cond err = if cond then throwError e else return ()
事实上,这似乎很明显,以至于我很惊讶它不是 MonadError 库。
问题:
只有满足某些条件,是否有更好/更正确的方法来引发错误?