Size: a a a

Clojure — русскоговорящее сообщество

2020 November 04

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
(def comp-funcs (comp ...))

(defn try-comps [el] (try (comp-funcs el) (catch ...
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
я бы как-то так пробовал
источник

a

alex in Clojure — русскоговорящее сообщество
так а нельзя переписать (partial / 1) часть? или вы об этом же
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Aeonax Liar
(require '[fmnoise.flow :as flow])
(->> [3 2 1 0]
    (map #(flow/call / 1 %))
    (filter (comp not flow/fail?)))

Но с левой либой
получается, flow/call вернет монаду, а следующий фильтр снесет все ошибочные результаты,  принцип понятен
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
у меня просто большой стек внутри comp, и лень догонять, откуда ошибка.
источник

AL

Aeonax Liar in Clojure — русскоговорящее сообщество
Ivan Grishaev
получается, flow/call вернет монаду, а следующий фильтр снесет все ошибочные результаты,  принцип понятен
он вернет exception как есть=)
источник

AL

Aeonax Liar in Clojure — русскоговорящее сообщество
а flow/fail? просто обертка с проверкой это ексепшн или нет
источник

AL

Aeonax Liar in Clojure — русскоговорящее сообщество
пропустил часть реквеста по логированию ошибки в первом сообщении🙈
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
и сколько раз говорили, что исключения плохо ложатся на фп…
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
(defn safe []
 (fn [xf]
   (fn
     ([] (xf))
     ([result] (xf result))
     ([result input]
      (try
        (xf result input)
        (catch Exception e
          (log/error e)
          result))))))
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
(sequence (comp (safe)
                               (map inc)
                               (map dec)
                               (map (fn [x] (/ 1 x))))
                         
                         [3 2 1 0])
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
короче просто (safe) кладем на вершину стека, и все норм
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
получается (1/3 1/2 1) и исключение в консоли
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
экий вы затейник, мсье!
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
если бы в кложе были монады или что-то около, весь язык был бы другим.
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
Ivan Grishaev
если бы в кложе были монады или что-то около, весь язык был бы другим.
либами есть
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
хош - юзай, хош - не, мне щас без чего-то вроде Failjure больно кодить
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Ivan Grishaev
Скажем, один из элементов вычисляется с ошибкой, и нужно его пропустить. Но не пойму, как конкретно это сделать -- вычисление же протекает за кадром
значит нужен не map, а keep
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
значит нужен не map, а keep
(sequence (keep (fn [x] (try (/ 1 x) (catch Exception _)))) [3 2 1 0])
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
У меня была пачка чужих трансдьюсеров, с ними не так все просто
источник