IO ()
main = run `catchError` handler where
handler e = putStrLn $ "MY Error: " ++ show e
run = do
let args = eitherDecode :: Either String Args
either error print args
Однако в этом случае catchError не ловит результат после вызова error
А почему это лучше, чем? main :: IO () main = run `catchError` handler where handler e = putStrLn $ "MY Error: " ++ show e run = do let args = eitherDecode :: Either String Args either fail print args
Как можно избежать префикса user error, используя MonadFail IO? Пример: main :: IO () main = run `catchError` handler where handler = putStrLn . show run = do let args = eitherDecode :: Either String Args either fail print args В ошибках получается вывод: user error (My Error), тогда как я хочу просто My Error.
Ну либо не использовать fail либо не использовать show
Вообще не совсем понятно почему ты хочешь бросать тут именно IOError, тут ведь больше подошло бы какое-то свое исключение, которое бы описывало что у тебя произошло, не?
Хмм... Хорошо, спасибо большое!
Обсуждают сегодня