Apr. 10th, 2013

juan_gandhi: (VP)
пока смотрел на "возможно результат, а возможно и ошибка" и на коллекцию как на две монады, которые надо коммутировать, то, блин, вечно какая-то нескладуха была, ошибки летели в логи, потому что некуда сложить, и т.п.

Как добавил traverse в класс Result, и осознал, что коллекция (в частности) - это traversable, так и всё элементарно стало.

Объект содержит коллекцию, и получен путём парсинга какого-то текста, в котором тоже есть коллекции внутре, и т.п. Результат - или хороший объект, или список дефектов.

Ну так это траверс, и все дела. Апликативный функтор применяется к траверсаблу.

Хоть переписывай свой доклад про апликативы.

E.g.
    /*val result=*/     parsed flatMap (_.parsedItems)



What happens here: parsed may be a good result with a value inside, or a list of errors; then we call parsedItems on a good value, which can result in a list of errors or in a good value.

Another example:
        val eobWithItemsOpt = eobOpt <*> itemsOpt


We have two values each of which can be a list of errors or a good value; if both are good, we return a Good((eob, items)), otherwise we produce a summary list of errors.

Obvious? Sure? Cool! Ask...

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

August 2025

S M T W T F S
      12
3456789
10 11 12 13141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 16th, 2025 04:45 am
Powered by Dreamwidth Studios