clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
y.khmelevskii 2017-10-22T00:32:57.000065Z

подскажите, пожалуйста, как красивее сделать следующую трансформацию: есть два вектора

(def a [{:accent :milky}
        {:accent :salmon}
        {:accent :bostonBlue}])

(def b [:a :button])
нужно получить
[{:component :a :accent :milky}
   {:component :a :accent :salmon}
   {:component :a :accent :bostonBlue}
   {:component :button :accent :milky}
   {:component :button :accent :salmon}
   {:component :button :accent :bostonBlue}]
у меня получаются какие монстроидальные конструкции (

2017-10-22T02:05:53.000023Z

(for [a1 a b1 b] (assoc a1 :component b1))

maxp 2017-10-22T04:27:30.000026Z

@dottedmag - мы-то может где-то и троллим, но я про массы. Вот смотри яркий пример - @ivana. Что за чувак вообще не понятно, что полезного сделал за всю жизнь - тоже. Зато горазд рассуждать о вещах, о которых имеет очень поверхностное представление, причем, мыслеформ кроме "фигня" и "распил" особо не наблюдается.

dottedmag 2017-10-22T08:21:21.000003Z

@maxp Это все необходимые признаки хорошего политолога — может бросать писание кода и начинать грести деньги лопатой.

dottedmag 2017-10-22T08:27:13.000052Z

https://github.com/clojerl/clojerl

y.khmelevskii 2017-10-22T09:55:53.000060Z

@jahson что-то мне кажется это не об этом. Я могу сделать редьюс внутри которого мап в мапе. Но это жесть, как по мне

dottedmag 2017-10-22T10:08:16.000021Z

@y.khmelevskii (for [b1 b a1 a] (assoc a1 :component b1)) даёт ровно тот результат, который ты запросил.

dottedmag 2017-10-22T10:08:47.000021Z

Порядок в for изменён по сравнению с тем, что предложил @jahson

ilevd 2017-10-22T10:19:46.000056Z

(for [b1 b a1 a] (assoc {} :component b1 :accent (:accent a1))) не верь им, делай так))

ilevd 2017-10-22T10:42:11.000015Z

Даже так (vec (for [b1 b a1 a] (merge {:component b1} a1)))

dottedmag 2017-10-22T13:24:05.000009Z

@ilevd Зачем assoc в пустую карту?

dottedmag 2017-10-22T13:24:31.000048Z

Типа, чтобы мусор не приехал? Ну, да.

ilevd 2017-10-22T14:05:01.000037Z

@dottedmag да не, там просто порядок получается другой, сначала :component, потом :accent как в запрошенном резалте 😀

ilevd 2017-10-22T14:08:41.000039Z

(not= (map first (for [b1 b a1 a] (assoc {} :component b1 :accent (:accent a1))))
      (map first (for [b1 b a1 a] (assoc a1 :component b1))))

anjensan 2017-10-23T10:03:13.000224Z

так ничего, что в хешах кложурных порядок не определен?

ilevd 2017-10-23T11:42:14.000245Z

Ну вообще, конечно, это шутка была, но по факту:

(reduce (fn [m i] 
          (let [m* (assoc m i i)]
            (prn (type m*) m*)
            m*))
        {} (range 12))
clojure.lang.PersistentArrayMap {0 0}
clojure.lang.PersistentArrayMap {0 0, 1 1}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3, 4 4}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3, 4 4, 5 5}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8}
clojure.lang.PersistentHashMap {0 0, 7 7, 1 1, 4 4, 6 6, 3 3, 2 2, 9 9, 5 5, 8 8}
clojure.lang.PersistentHashMap {0 0, 7 7, 1 1, 4 4, 6 6, 3 3, 2 2, 9 9, 5 5, 10 10, 8 8}
clojure.lang.PersistentHashMap {0 0, 7 7, 1 1, 4 4, 6 6, 3 3, 2 2, 11 11, 9 9, 5 5, 10 10, 8 8}
=> {0 0, 7 7, 1 1, 4 4, 6 6, 3 3, 2 2, 11 11, 9 9, 5 5, 10 10, 8 8}

ilevd 2017-10-23T11:44:03.000166Z

https://stackoverflow.com/a/26055521

anjensan 2017-10-23T13:46:51.000452Z

думаю опечатка

y.khmelevskii 2017-10-22T20:48:39.000106Z

супер, спасибо! я не до конца понимал как работает for

dottedmag 2017-10-22T21:25:05.000077Z

Интересно, насколько кложурный подход к стабильности отличается от мейнстримного. Я сегодня хотел добавить в Homebrew приложение, которое последний раз релизилось в 2006 (потому что в формате .djvu за последние 11 лет особых изменений не произошло), а там явным образом не принимают формулы для софта, который за последний год не выпустил ни одного релиза.

misha 2017-10-22T21:29:26.000042Z

хипстера рубисты