Size: a a a

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

2020 November 08

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Окей, спасибо)
ну и вообще group-name можно заинлайнить
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Ладно, пойду пооптимизирую еще...
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Есть смысл transient {} менять на java.util.HashMap?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Есть смысл transient {} менять на java.util.HashMap?
вряд ли, тебе же на выходе нужен нормальный мап
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Конверсия слишком долгая будет?
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Mikhail Borisov
Есть смысл transient {} менять на java.util.HashMap?
если возмёшь что-то из java.util. уже чуть сложнее будет в JS портировать
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Ладно, пойду пооптимизирую еще...
оптимизировать тут можно другое
чтобы макрос генерил не код, делающий вставки через assoc, а сразу мапу вида
{"name" (.group matcher "name")}
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
А это и так не портируется, регулярки в джсе по другому работают
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
а ок
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
оптимизировать тут можно другое
чтобы макрос генерил не код, делающий вставки через assoc, а сразу мапу вида
{"name" (.group matcher "name")}
Офигенная идея, что-то я не додумался :)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Mikhail Borisov
Офигенная идея, что-то я не додумался :)
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Интересно кстати, а во что превращается кложуровский destructuring?
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Надо в let смотреть)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
а зачем eval в 7-й строке?
предполагается, что этот макрос должен работать не только со строковыми литералами?
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
а зачем eval в 7-й строке?
предполагается, что этот макрос должен работать не только со строковыми литералами?
Да
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
а пример можно, что такое ещё евалится в строку на этапе компиляции?
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
> Unpredictably faster Clojure.
улыбнуло
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
а пример можно, что такое ещё евалится в строку на этапе компиляции?
в виде примера вызова макроса, но без строки
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Sergey Trofimov
а пример можно, что такое ещё евалится в строку на этапе компиляции?
Например, у меня есть функция (defn russian-word [param-name] ...), которая собирает строку (str "(?<" param-name ">[а-яА-я]+)")

Используется это так:

(regex (str "Привет, " (russian-word "name") ", как дела?"))
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Есть не только russian-word, есть регулярки посложнее, типа число с плавающей точкой
источник