История изменений
Исправление KblCb, (текущая версия) :
То есть так? Кстати, ты уверен что сигнатура именно m a -> m b -> m a, а не как у меня?
finallyError :: (Monad m, MonadError e m) => m a -> m b -> m b
finallyError m1 m2 = catchError (void m1) (void . return) >> m2
Я и не спорю с тем, что у тебя уже всё работает. Просто с подобными проблемами я не сталкивался, потому мне и интересны причины их возникновения.
Исправление KblCb, :
То есть так?
finallyError :: (Monad m, MonadError e m) => m a -> m b -> m b
finallyError m1 m2 = catchError (void m1) (void . return) >> m2
Я и не спорю с тем, что у тебя уже всё работает. Просто с подобными проблемами я не сталкивался, потому мне и интересны причины их возникновения.
Исходная версия KblCb, :
То есть так?
finallyError :: (Monad m, MonadError e m) => m a -> m b -> m a
finallyError m1 m2 = catchError (void m1) (void . return) >> m2
Я и не спорю с тем, что у тебя уже всё работает. Просто с подобными проблемами я не сталкивался, потому мне и интересны причины их возникновения.