LINUX.ORG.RU

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

Исправление 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 - нужно подменить все продолжения сразу, которых у меня аж три штуки. То же самое у Дона Сайма.