LINUX.ORG.RU

История изменений

Исправление 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

Я и не спорю с тем, что у тебя уже всё работает. Просто с подобными проблемами я не сталкивался, потому мне и интересны причины их возникновения.