Fork me on GitHub
#clojure-russia
<
2017-10-23
>
asolovyov12:10:01

@nicola появился route-map 0.0.5 на clojars, только вообще непонятно, как определить, что там внутри 🙂

dottedmag15:10:14

@ilevd Типа, массив преобразуется в хэш-таблицу только после того, как туда набьётся 17 элементов? Вроде я что-то слышал, что Рич посчитал, что именно на 17 sweet spot для каких-то workloads.

y.khmelevskii17:10:22

подскажите, можно внутри макроса использовать переменную не с тела этого макроса? Например, есть следующий псевдо-макрос:

(defmacro css.
  [class]
  `(str component-name "_" ~class))
он ничего не знает о переменной component-name. При его использовании, он может увидеть эту переменную в своей области видимости, например:
(def component-name "button")
(css."wrapper")
результатом будет, соответсвенно, button_wrapper такое можно сделать?

ilevd17:10:16

@dottedmag там получается 18 элементов в массиве (9 пар ключ-значений) и если 10-ый раз assoc делать, то преобразуется в hash-map. С виду похоже на опечатку. Нехорошо, если из-за этого какая-то оптимизация не срабатывает.

ilevd17:10:37

Хотя можно просто создать hashmap и arraymap с 9 элементами и потестить что быстрее)

dottedmag17:10:48

@y.khmelevskii Можно, но тебя будут беспощадно материть те, кто потом будет разбираться в этом коде.

dottedmag17:10:05

@y.khmelevskii Лучше уж тогда сделать (with-component-name "button" ...), который будет устанавливать контекст для всяких css.

y.khmelevskii17:10:51

@dottedmag за что материть? вроде безобидный синтаксический сахар. Да, (with-component-name "button" ...) нравится больше. Остался вопрос как синтаксически это сделать 🙂

dottedmag18:10:06

Кстати, а зачем для этого макро?

dottedmag18:10:19

with-component-name может устанавливать динамическую переменную, и ему нужно быть макросом. А css. может читать её, будучи обычной функцией.

dottedmag18:10:48

@y.khmelevskii (binding [*component-name* "button"] (css. "wrapper")...)

dottedmag18:10:57

И css. будет читать *component-name*

y.khmelevskii19:10:43

да макрос не обязателен. спасибо, буду пробовать

y.khmelevskii21:10:08

ха, with-component-name должен оборачивать, весь код. так еще хуже, лучше уж без этого в принципе