clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
asolovyov 2017-10-23T12:40:01.000037Z

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

dottedmag 2017-10-23T15:38:14.000333Z

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

y.khmelevskii 2017-10-23T17:02:22.000290Z

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

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

ilevd 2017-10-23T17:32:16.000108Z

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

ilevd 2017-10-23T17:34:37.000491Z

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

dottedmag 2017-10-23T17:37:48.000546Z

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

dottedmag 2017-10-23T17:43:05.000180Z

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

y.khmelevskii 2017-10-23T17:55:51.000276Z

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

dottedmag 2017-10-23T18:12:06.000262Z

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

dottedmag 2017-10-23T18:12:19.000657Z

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

dottedmag 2017-10-23T18:13:48.000064Z

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

dottedmag 2017-10-23T18:13:57.000382Z

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

y.khmelevskii 2017-10-23T19:13:43.000406Z

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

y.khmelevskii 2017-10-23T21:34:08.000039Z

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