История изменений
Исправление
dave,
(текущая версия)
:
Да, уверен с точностью до условия MonadError. В твоей версии теряется результат вычисления m a, который важен для меня. В блоке m b обычно сидит что-нибудь типа команды «отдай ресурс такой-то, чтобы там ни случилось прежде в m a». Но вернуть нужно именно результат m a.
Что-то мне подсказывает, что finallyError не выражается в терминах catchError. Да, и вообще, для Cont функция finallyError сложнее в реализации, чем catchError - нужно подменить все продолжения сразу, которых у меня аж три штуки. То же самое у Дона Сайма.
Дополнение. Тем более, что ни catchError, ни (>>=) не подменяют третьего продолжения, а finallyError подменяет, и это очень важно. То есть, явно одно не выражается через другое.
Исходная версия
dave,
:
Да, уверен с точностью до условия MonadError. В твоей версии теряется результат вычисления m a, который важен для меня. В блоке m b обычно сидит что-нибудь типа команды «отдай ресурс такой-то, чтобы там ни случилось прежде в m a». Но вернуть нужно именно результат m a.
Что-то мне подсказывает, что finallyError не выражается в терминах catchError. Да, и вообще, для Cont функция finallyError сложнее в реализации, чем catchError - нужно подменить все продолжения сразу, которых у меня аж три штуки. То же самое у Дона Сайма.