Size: a a a

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

2020 February 09

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
оптимизация. я не хочу делать не нужные трансформации в рантайме
и у тебя проблемы с производительностью js->clj в рантайме?
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
например:

(defmacro defcss
 [sym css]
  `(def ~sym
       (-> ~css
           cljs.core/clj->js
           emotion/create-css))


здесь я написал макрос для интеропа с emotion (styled components), который генерирует css стили. В этот макрос я передаю clojure map, но в emotion (это js либа) мне нужно передать js объект. Так вот, я бы хотел сделать это cljs.core/clj->js в компайл лайме, а не рантайме
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
Sergey Trofimov
и у тебя проблемы с производительностью js->clj в рантайме?
этот макрос будет очень много раз использоваться, и я бы хотел не делать лишних вычислений в рантайме если это возможно
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
они все равно будут
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
есть мнение, что макросы нужно использовать лишь тогда, когда нельзя что-то реализовать функцией
это для либы. они хорошо для этого подходят. я так думаю
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
оптимизировать надо тогда, когда не хватает производительности
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
а так - я уже не раз писал про мемоизацию
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
ох. мы все это слышали много раз )))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
например:

(defmacro defcss
 [sym css]
  `(def ~sym
       (-> ~css
           cljs.core/clj->js
           emotion/create-css))


здесь я написал макрос для интеропа с emotion (styled components), который генерирует css стили. В этот макрос я передаю clojure map, но в emotion (это js либа) мне нужно передать js объект. Так вот, я бы хотел сделать это cljs.core/clj->js в компайл лайме, а не рантайме
clojure map откуда и на каком этапе возникает?
источник

AK

Anton Karpov in Clojure — русскоговорящее сообщество
ох опять)
источник

AK

Anton Karpov in Clojure — русскоговорящее сообщество
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
ох. мы все это слышали много раз )))
просто выглядит, как будто тебя покусали сиплюсовики
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
я описываю статично

(defcss my-style
{:color “red”
:font-size 14})
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
мемоизируешь композицию cljs.core/clj->js и emotion/create-css, профит
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
мемоизируешь композицию cljs.core/clj->js и emotion/create-css, профит
он не считается часто, он используется много раз. то есть у меня много вызовов этих макросов, но один и тот же считается редко. я не думаю что это кейс для мемоизации
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
я описываю статично

(defcss my-style
{:color “red”
:font-size 14})
вот и описывай сразу js object через интероп, зачем тебе кложуровская мапка 😊
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Sergey Trofimov
вот и описывай сразу js object через интероп, зачем тебе кложуровская мапка 😊
да сразу на js писать, чоуж
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
Sergey Trofimov
вот и описывай сразу js object через интероп, зачем тебе кложуровская мапка 😊
хаха, не хочу в коде приложения видеть интероп))) хочу спрятать под капот
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
хаха, не хочу в коде приложения видеть интероп))) хочу спрятать под капот
так спрячь интероп в отдельную либу
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
я не могу интероп спрятать в макрос в компайл тайм получается. вот и вся проблема
источник