Pull to refresh

Comments 8

А почему бы Nothing не объявить просто как константу типа Maybe, вместо синглетона?
Паттерны, все дела. Это уже дело вкуса, никто не мешает и создавать каждый раз, когда надо, экземпляры.
Вопрос: зачем вообще библиотека монад в PHP? Это же неидеоматичное использование языка.

В Haskell монады крайне полезны и идеоматичны, например, они обеспечивают статические гарантии на уровне системы типов: разделение чистого кода и кода с побочными эффектами, выделение STM-транзакций и т.п. Там даже сахар на уровне языка для них есть.

Цель — популяризация функционального подхода? Честно говоря, я и в компактной нотации Haskell с трудом осваиваю нетривиальные концепции теории категорий, а когда они приправлены ООП и всяческой шелухой, то я и вовсе теряюсь.
Да конечно особо они не нужны (да что уж там, я бы назвал это баловством), особенно в нетепизированных то языках. Но если пользоваться с умом, то код станет в разы чище и читабельнее.
И да конечно же, да прибудет функциональщина, за лямбду!
P.S. Тут скорее идет не приправление функциональщины ООП, а наоборот. Сколько раз я проклинал NPE после использования скалы с Option'ами…
Многим кажется, что они поняли монады после знакомства Maybe. На самом деле всё немножно сложнее, ведь каждую монаду приходится осознавать заново. Есть ведь ещё Reader, State, Cont etc., трансформеры монад и проблемы коммутации, связь с аппликативными функторами и комонадами, много всего.

> код станет в разы чище и читабельнее.
Код повысит входную планку для читателей. Для просвещённых он будет читабельнее, для большинства же — врядли.

> Сколько раз я проклинал NPE после использования скалы с Option'ами
Maybe/Optional не спасают от ошибок, они лишь указывают о возможности ошибки на уровне системы типов. Без статической проверки типа от них гораздо меньше прока.
Многим кажется, что они поняли монады после знакомства Maybe. На самом деле всё немножно сложнее, ведь каждую монаду приходится осознавать заново.

естественно каждая монада личность :)
Код повысит входную планку для читателей. Для просвещённых он будет читабельнее, для большинства же — врядли.

Согласен, но начать читать не так уж и сложно.
Maybe/Optional не спасают от ошибок, они лишь указывают о возможности ошибки на уровне системы типов. Без статической проверки типа от них гораздо меньше прока

Прока может быть и меньше, но все же если придерживаться того, что null — это значение, а не его отсутствие, и пользовать где нужно Maybe. Должны полностью убрать возможность пропустить какой нибудь null там где это не ожидается
Спасибо за дополнение, тем более что сам я в функциональщине полный ноль.
По поводу неполноценности монад в той статье могу лишь сказать, что изначальная статья писалась как раз с тем расчетом, чтобы показать, что некоторые идеи из ФП довольно удобны, и очень вероятно, что у Феррары просто напросто не было задачи написать правильные монады с точки зрения ФП.
Sign up to leave a comment.

Articles