This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-10-22
Channels
- # aws (4)
- # bangalore-clj (2)
- # beginners (99)
- # boot (8)
- # clojars (22)
- # clojure (87)
- # clojure-dev (2)
- # clojure-greece (10)
- # clojure-russia (22)
- # clojurescript (80)
- # cursive (4)
- # data-science (2)
- # datomic (10)
- # emacs (1)
- # fulcro (1)
- # garden (2)
- # luminus (1)
- # lumo (29)
- # off-topic (20)
- # om (6)
- # onyx (18)
- # parinfer (7)
- # perun (1)
- # portkey (28)
- # re-frame (93)
- # reagent (59)
- # ring-swagger (2)
- # shadow-cljs (31)
- # slack-help (15)
- # spacemacs (5)
- # uncomplicate (3)
- # yada (6)
подскажите, пожалуйста, как красивее сделать следующую трансформацию: есть два вектора
(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}]
у меня получаются какие монстроидальные конструкции (@dottedmag - мы-то может где-то и троллим, но я про массы. Вот смотри яркий пример - @ivana. Что за чувак вообще не понятно, что полезного сделал за всю жизнь - тоже. Зато горазд рассуждать о вещах, о которых имеет очень поверхностное представление, причем, мыслеформ кроме "фигня" и "распил" особо не наблюдается.
@maxp Это все необходимые признаки хорошего политолога — может бросать писание кода и начинать грести деньги лопатой.
@jahson что-то мне кажется это не об этом. Я могу сделать редьюс внутри которого мап в мапе. Но это жесть, как по мне
@y.khmelevskii (for [b1 b a1 a] (assoc a1 :component b1))
даёт ровно тот результат, который ты запросил.
(for [b1 b a1 a] (assoc {} :component b1 :accent (:accent a1)))
не верь им, делай так))
@dottedmag да не, там просто порядок получается другой, сначала :component, потом :accent как в запрошенном резалте 😀
(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))))
Ну вообще, конечно, это шутка была, но по факту:
(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}
Интересно, тут https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/PersistentArrayMap.java#L180-L181 опечатка и должно быть >= или специально сделано? Так как на деле получается 9 пар ключ-значений (не степень двойки), хотя HASHTABLE_THRESHOLD объявлен как 16
супер, спасибо! я не до конца понимал как работает for
Интересно, насколько кложурный подход к стабильности отличается от мейнстримного. Я сегодня хотел добавить в Homebrew приложение, которое последний раз релизилось в 2006 (потому что в формате .djvu за последние 11 лет особых изменений не произошло), а там явным образом не принимают формулы для софта, который за последний год не выпустил ни одного релиза.
Интересно, тут https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/PersistentArrayMap.java#L180-L181 опечатка и должно быть >= или специально сделано? Так как на деле получается 9 пар ключ-значений (не степень двойки), хотя HASHTABLE_THRESHOLD объявлен как 16