Size: a a a

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

2020 February 08

A

Artem in Clojure — русскоговорящее сообщество
Anton Chikin
Hence, if you are writing something mundane, like another REST API, choosing a proper GC should be the least of your concerns.
Indeed, if you are writing a program that can accommodate arbitrary long pauses, picking a throughput-focused stop-the-world GC like ParallelGC is a valid thing to do. A good example of such workload is a batch processing task — you don't care about hiccups along the way as long as the final result arrives on time.
Для rest api рекомендуют на заморачиваться с gc?
источник

KR

Kostyantin Randomname in Clojure — русскоговорящее сообщество
Назаморачиваться именно
источник
2020 February 09

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
Подскажите возможно ли написать такой макрос:

(defmacro bar
 [v]
 (let [v' (map inc v)]
   `(identity ~v')))


он работает если я передам в него простой вектор

(macroexpand-1
'(bar [1 2 3]))

но по какой-то причине не работает в таком случае

(macroexpand-1
'(bar (when true [1 2 3])))


можно ли как-то это исправить так, что бы map выполнялся в компайл тайме?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
Подскажите возможно ли написать такой макрос:

(defmacro bar
 [v]
 (let [v' (map inc v)]
   `(identity ~v')))


он работает если я передам в него простой вектор

(macroexpand-1
'(bar [1 2 3]))

но по какой-то причине не работает в таком случае

(macroexpand-1
'(bar (when true [1 2 3])))


можно ли как-то это исправить так, что бы map выполнялся в компайл тайме?
Unquote не поможет? И зачем вообще тут макрос?
источник

YK

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
Подскажите возможно ли написать такой макрос:

(defmacro bar
 [v]
 (let [v' (map inc v)]
   `(identity ~v')))


он работает если я передам в него простой вектор

(macroexpand-1
'(bar [1 2 3]))

но по какой-то причине не работает в таком случае

(macroexpand-1
'(bar (when true [1 2 3])))


можно ли как-то это исправить так, что бы map выполнялся в компайл тайме?
«он работает если я передам в него простой вектор»
не вижу, что он работает
(bar [1 2 3])
Execution error (ClassCastException).
java.lang.Long cannot be cast to clojure.lang.IFn
источник

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
это был упрощенный пример. macroexpand-1 без where работает, с ним - нет
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
а макрос то что делать должен
источник

YK

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

YK

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
у тебя выполняется вот такое (map inc '(when true [1 2 3]))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ты получаешь код как данные
источник

YK

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

YK

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

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
потому что я не знаю что это за функции внутри
источник

YK

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

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
(map inc (eval '(when true [1 2 3])))
источник

YK

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

YK

Yurii Khmelevskii in Clojure — русскоговорящее сообщество
а так будет (map inc (eval '(clojure.core/when true [1 2 3])))
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Yurii Khmelevskii
и как я уже понял я не могу его евайлить
Только руками eval v
источник