Re[6]: Монады
От: AlexRK  
Дата: 28.10.14 08:12
Оценка:
Здравствуйте, gandjustas, Вы писали:

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


Не могу согласиться. Объективно некоторые вещи простые, некоторые сложные.

G>Во вторых, запишем выражение по другому:

G>
G>from v1 in a
G>from v2 in f(v1)
G>select g(v1, v2)
G>

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

Почему? Вот вариант без страхолюдства с select и from:
  g(a, f(a));


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

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

Я заметил, что код точно так же копипастится и в двух других случаях — во втором два вызова Bind, в третьем два from-in. И в них точно так же легко ошибиться:
   return from v1 in a
          from v2 in a
          select v1+v2;


Опять же, оставив вопрос копипасты — количество кода с монадами меньше не стало.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.