Ещё об обработке ошибок в Rust

Aug 24, 2015 22:46

С обработкой ошибок в Rust надо явно что-то придумывать. Мне категорически нравится, что в языке нет исключений, но без синтаксического сахара вроде хаскелевской конструкции do код с аккуратной обработкой ошибок визуально превращается в простыню с перекладыванием значений из одних типов в другие ( Read more... )

exceptions, code, rust, errors, error handling, language

Leave a comment

swizard August 25 2015, 13:25:55 UTC
Да, согласен насчёт Control.Applicative, похоже на правду.

Но в лоб всё равно не срастается: в хаскеле оно красиво сработает, потому что егонный список - это функтор. А в Rust используется механизм итераторов (в примере выше split возвращает итератор подстрок), который, вроде бы, по-сути тоже ленивый список, только в профиль, но при этом не функтор. Почему так - я не готов теоретизировать: подозреваю, что не может быть выполнено правило "fmap id = id", в том числе, потому что итератор может быть мутабельный.

Так что надо придумывать какие-то пути обхода.

Reply

permea_kra August 25 2015, 14:32:17 UTC
как раз свойства представления входного потока для аппликативного интерфейса разборщика глубоко пофиг. Вопрос именно в том, чтобы получился этот аппликативный интерфейс, т.е. чтобы сам разборщик был функтором. Итераторы для этого наружу вообще необязательно показывать.

Другое дело, что в этом случае скорее всего придется выкинуть getopts и писать разбор параметров ручками, но это может и к лучшему.

Reply


Leave a comment

Up