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

November 2025

S M T W T F S
       1
2345678
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 3rd, 2025 12:06 pm
Powered by Dreamwidth Studios