Size: a a a

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

2020 February 28

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
одинокие атомы в тред-макросах в скобки не обязательно - (:text) => :text
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
ну и гет-ин одинаковый читаемее в лет выносить
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Денис Нибаев
точно.
а имеет смысл get-in запихивать в отдельную функу  и ее вызывать ради 2х случаев?
не имеет конечно же
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
Andrey Ivanov
С предложением выносить функции уже похоже на квест угадай  автора по рекомендации
👍
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
Жесть какая-то... Причем, дублированная...
  (let [m (group-by (comp keyword :type)
                   (get-in value [:organization :resource :address]))]
   (-> (or (:physical m) (:postal m)) first :text))
ну то есть чтобы найти первый элемент в большой коллекции мы сделаем кучу ненужной работы по группировке коллекции...
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
С предложением выносить функции уже похоже на квест угадай  автора по рекомендации
С предложением не писать код, делающий ненужных вычислений — тоже 😊
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
Сергей видимо просто большой поклонник Алана Перлиса ;)

"It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures." —Alan Perlis
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Мой предыдущий опыт показывает, что обычно у кастомеров не более 3 адресов - почтового, физического и запасного. Но конечно в бенчмарке со сферическим кастомером со 100500 адресами твой кот выиграет. В бенчмарке со 100500 кастомерами с несколькими адресами каждый - может ненамного тоже. Но имхо это ловля блох на пустом месте и попытка оправдать нечитаемого кота )
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
Мой предыдущий опыт показывает, что обычно у кастомеров не более 3 адресов - почтового, физического и запасного. Но конечно в бенчмарке со сферическим кастомером со 100500 адресами твой кот выиграет. В бенчмарке со 100500 кастомерами с несколькими адресами каждый - может ненамного тоже. Но имхо это ловля блох на пустом месте и попытка оправдать нечитаемого кота )
совсем неочевидно из контекста задачи, что в векторе всегда 2-3 элемента
[{:text "123" :type "postal"}
{:text "789" :type "physical"}]
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
совсем неочевидно из контекста задачи, что в векторе всегда 2-3 элемента
[{:text "123" :type "postal"}
{:text "789" :type "physical"}]
для меня это выглядит, что полей там может быть дофига
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
и начинающему желательно понимать алгоритмический смысл решения, а не просто заучить подходящие функции из коре
а смысл здесь простой — есть некая последовательность объектов, нужно найти первый попадающий под условие
варианты с фильтрами и групбаями просто не подходят по смыслу
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
твой if-let можно записать как
  (or
   (->>
     (get-in value [:organization :resource :address])
     (some #(when (#{"physical"} (:type %)) %))
     (:text))

   (->> (get-in value [:organization :resource :address])
     (some #(when (#{"postal"} (:type %)) %))
     (:text)))
и or засунуть в some, чтобы находилось за один проход, конечно
источник

AI

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
да сорри, неправильно
источник

ST

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

AG

Anatoliy Guliy in Clojure — русскоговорящее сообщество
Поделитесь, кто что использует для генерации документации по исходникам (clj/cljs).
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Sergey Trofimov
да, здесь group-by лучше подходит
поздно, я уже оптимальный вариант для часто переезжающего кастомера накостылил
  (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))))
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Anatoliy Guliy
Поделитесь, кто что использует для генерации документации по исходникам (clj/cljs).
Codox, ранее lein autodoc
источник

AG

Anatoliy Guliy in Clojure — русскоговорящее сообщество
Ivan Grishaev
Codox, ранее lein autodoc
Cobox - как-то не умеет спеки парсить и это прискорбно. а с autodoc вообще ерунда какая-то, я его даже запустить не могу. походу lein plugin сломан…
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Anatoliy Guliy
Поделитесь, кто что использует для генерации документации по исходникам (clj/cljs).
источник