Аппликативное программирование в Ruby: секретные архивы тайного общества адептов raleway

Дмитрий Цепелев / Toptal Все знают, что бизнес–логику в Rails лучше держать подальше от моделей и контроллеров: паттерн «service object» и все его многочисленные родственники давно и плотно вошли в обиход. Результатом работы такого примитива является некий результат: либо успешный (содержащий некие данные внутри), либо не очень (обычно там одна или несколько ошибок). Как известно, если вам нужна некая новая абстракция — нужно почитать книжку по функциональному программированию, и она там обязательно найдется. Этот самый результат не стал исключением: для нашей задачи подойдут монады Either или Maybe (пользователи dry-monads не дадут соврать). Однако, если копнуть чуть глубже, то выяснится, что, кроме монад, нам подойдет еще одна абстракция: аппликативные функторы. Они более ограничены, но более просты. В докладе мы выясним, что же такое функтор, как сделать его аппликативным, как превратить его в монаду, и в чем же, черт возьми, разница между ними!
Back to Top