Size: a a a

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

2020 February 28

AG

Anatoliy Guliy in Clojure — русскоговорящее сообщество
не похоже она тоже пока спеку не умеет (
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
пока нет, но в роадмапе стоит в приоритете
источник

AG

Anatoliy Guliy in Clojure — русскоговорящее сообщество
Ну то есть, сейчас вообще нет вариантов сгенерить доку со спеками, так получается?
источник

VM

Vyacheslav Mikushev in Clojure — русскоговорящее сообщество
Andrey Ivanov
поздно, я уже оптимальный вариант для часто переезжающего кастомера накостылил
  (loop [physical nil
        postal nil
        [{:keys [type text]} :as r] (get-in value [:organization :resource :address])]
   (cond
     physical physical
     (empty? r) postal
     :else (recur ({"physical" text} type)
                  (or postal ({"postal" text} type))
                  (rest r))))
Если мы хотим оптимизировать по самое не хочу. Я бы отказался от get-in, потому что будут создаваться промежуточные вектора, которые нужно будет собирать.:) Поэтому, (-> value :organization :resource :address).
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Господа, а подскажите по спеке:
Мне нужно сделать спеку на мапу, которая будет проверять по ключам и также мне нужно будет сравнить два значения в мапе (например чтобы 1 было точно меньше другого). Как мне написать такую спеку?
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
(s/and ::my-map-spec ::check-keys)
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
где ::check-keys это функция типа
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
(fn [{:keys [field1 field2]}] (= field1 field2))
источник

IG

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

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Ok, спасибо)
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
А что за spec2? Первые оказались неудачными?
источник

IG

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

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Аааа, ясненько
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
Все хорошо, но со спекой им бы уже как-то определиться и какой-то формальный релиз сделать. Со второй они уже сколько возятся? Третий год вроде идет.
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
26 апреля 2017 Алекс init commit сделал.
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Такими темпами ее выпилят)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
поздно, я уже оптимальный вариант для часто переезжающего кастомера накостылил
  (loop [physical nil
        postal nil
        [{:keys [type text]} :as r] (get-in value [:organization :resource :address])]
   (cond
     physical physical
     (empty? r) postal
     :else (recur ({"physical" text} type)
                  (or postal ({"postal" text} type))
                  (rest r))))
(defn find-by-priority-pred
 "Take sequence of predicated and find first item in xs for best matching predicate."
 [preds, xs]
 (let [pred (apply some-fn (map-indexed
                             (fn [i pred] #(when (pred %) [i %]))
                             preds))]
   (second
     (reduce (fn [old-res, v]
               (let [[^int i _ :as new-res] (pred v)]
                 (cond
                   (nil? new-res) old-res
                   (zero? i) (reduced new-res)
                   (nil? old-res) new-res
                   (< i ^int (first old-res)) new-res
                   :else old-res)))
       nil xs))))
=> #'dev.playground/find-by-priority-pred
 (find-by-priority-pred [#(= "physical" (:type %))
                         #(= "postal" (:type %))]
   [{:text "42" :type "eternal"}
    {:text "123" :type "postal"}
    {:text "789" :type "physical"}])
=> {:text "789", :type "physical"}
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
сильно
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
но если большинство последовательностей таковы, что самый приоритетный предикат не срабатывает, то обходить приходится всех, и поэтому всё же вариант с group-by остаётся самым понятным
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
@strofimov1972 там бы нормальный фича реквест написать а не дамп из слака
источник