Обложка канала

Блог программиста S0ER. Мысли, ранний доступ к видео, фоточки, короткие посты. Ничего конкретного, но что-то будет полезным.

SOER

4 года назад
Открыть в
Элементарный пример, в законах монады есть ограничение, что применение ID-функции не должно менять содержимое монады. Возьмем пример Array.map(Id) === Array. т.е. Id функция выглядит как-то так Id = (x) => x, если мы теперь нарушим этот закон и Array.map(Id) будет возвращать у нас пустой массив (потому что в нашей программе не разрешены "пустые" действия). Закон мы нарушили, Array перестал "быть" монадой, а наша программа не изменила ни стиль, ни надежность работы. Таким образом, использования монад в ООП - это просто использование паттерна, который вводит некоторые ограничения. Это не делает ваш код "функциональным", просто для тех кто не очень понимает что такое метафора, что такое теория категорий, кажется, что понятие "монады" пришло из ФП, но там оно выполняет другую задачу - позволяет добавить императивное поведение в программу. А в ООП это просто интерфейс, который по какой-то причине захотелось назвать "Монадой". Более того, нарушение законов монады, например в JS Promise, не уменьшает полезности этого инструмента. И не "убивает" надежность программы. Но понять, что использовать метафору из теории категорий и писать функциональном стиле - это абсолютно разные вещи может далеко не каждый. Это боль нашего АйТи, которая называется "модно, молодежно".