Открыть список
Как стать автором
Обновить

Комментарии 10

> типы данных, возвращаемых f1 и f2, не соответствуют типам параметров f2 и f3
почему?
Спасибо, что нашли мою ошибку. Я пропустил кусочек первоисточника с текстом f1, f2 и f3. Поправил.
Не нашел монад в коде %)
Не хотите объяснить свою точку зрения?
А взорваться в исключении будет не дешевле? Что-то типа

try:
    return john.get_boss().get_wage()
except AttributeError:
    return None
Ну, это же учебный пример. Автор, наверное, использовал бы исключения, если бы не стояла задача обобщить это решение с предыдущими двумя.

А если это исключение вылетит во время расчетов в get_wage() по какой-то другой причине?

Отлавливать в get_wage отлавливаемые и рэйзить свои, которые ловить в верхнем try
Во-первых, спасибо автору, наконец-то начало проясняться(= И правильно понимаю, что в первых двух примерах достаточно расширить структуру входных параметров (принимать тоже кортеж и объект с полем-агрегатором промежуточных состояний) и не усложнять введением синтетичеких методов?
Как я понял предмет, монада − это такой способ объединения функций в цепочку, когда мы их входной и выходной типы данных продвигаем до такого типа, который будет обратно совместим с ними обоими. Для этого, естественно, нам нужны две дополнительные функции.

И правильно понимаю, что в первых двух примерах достаточно расширить структуру входных параметров
Тогда мы не сможем переиспользовать код f1, f2 и f3, а ведь это было нашей главной задачей.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.