Fork me on GitHub
#clojure-russia
<
2017-09-01
>
razum2um04:09:00

@fmnoise что ж ты раньше не объявился, когда как раз про монадки спрашивали 🙂 давай чуть конкретнее, не зря же мы нафлудили - сделай вклад, напиши как это должно выглядеть 🙂

fmnoise07:09:53

упаковываешь значение в either и пропускаешь через цепочку bind(если внутри операции есть обработка ошибки) или fmap(если внутри операции нет обработки ошибки), на выходе проверяешь если either -> left, то достаешь из него ошибку и обрабатываешь(в лог положить, юзеру показать etc), если right - тоже соотвественно реагируешь

(defn do-something
     [params]
     (->> (step1 params)
          (e-bind (partial step2))
          (e-bind (partial step3))
          (e-bind (partial step4))
          (e-fmap (partial step5))
          ((fn [res] (if (e-left? res)
                      (say-error (e-value res))
                      (say-ok (e-value res)))))))

anjensan09:09:45

это какая-то конкретная реализация either?

fmnoise15:09:53

ну у нас самописная, да