Re[5]: Монады
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 27.10.14 21:08
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>Хм, но это же ад. Первый вариант — самый понятный.

Понятность — очень субъективный параметр. Зависит от исключительно от предыдущего опыта писания.


ARK>Да и зачем монада тут?

Это же пример. В языке C#, кроме списков, монады практически не нужны.

ARK>Разве нельзя сделать примерно так (предположим, что в С# есть интерфейсы для чисел и классы типов)

Во-первых в C# таки нет классов типов, и не предвидится в ближайшее время.
Во вторых, запишем выражение по другому:
from v1 in a
from v2 in f(v1)
select g(v1, v2)

И никакие переопределения операторов не помогут разрулить.

ARK>Ну и самое главное — на этом примере уменьшения количества писанины не видно...

Странно что не видно...
Если ты не заметил, то для "ручного" варианта надо в каждом методе, оперирующим Maybe<T> проверять что есть значение (копипастить код).
Монады, как и другие паттерны, позволяют количество копипасты уменьшить и о паксимуму перенести в повторно используемые библиотеки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.