Size: a a a

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

2021 December 08

VV

Vitaly Vasiliev in Clojure — русскоговорящее сообщество
ну я ключ не могу вытащить, потому, что при любом действии кложа начинает резолвить foo , а так как такой переменной нет - он выдает ошибку)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
а если вот так?
(filt ['foo :bar 'bar :baz])
источник

VV

Vitaly Vasiliev in Clojure — русскоговорящее сообщество
так работает
источник

VV

Vitaly Vasiliev in Clojure — русскоговорящее сообщество
но мне для общего случая надо
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
Квоут должен быть не внутри, а на вызове
источник

ST

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

VV

Vitaly Vasiliev in Clojure — русскоговорящее сообщество
а я на вызове не могу сделать, так как он в виде символа приходит
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
(defn filt [binds] (filter keyword? binds))
(defmacro my-macro [binds] (vec (filt binds)))
(my-macro [foo :bar bar :baz])

=> [:bar :baz]
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
не при любом действии, а в строго определенный момент
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
если ты хочешь что-то делать с кодом, до того как он скомпилируется — для этого есть макросы. при входе в макрос никакой символ никуда не резолвится.
источник

VV

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

VV

Vitaly Vasiliev in Clojure — русскоговорящее сообщество
😭
источник

VV

Vitaly Vasiliev in Clojure — русскоговорящее сообщество
слезы счастья
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
(defmacro filt
 [binds]
 `[~@(filter keyword? binds)])
=> #'user.repl/filt
(macroexpand-1 '(filt [foo :foo bar :bar]))
=> [:foo :bar]
источник

VV

Vitaly Vasiliev in Clojure — русскоговорящее сообщество
спасибо ребята, я сейчас заплачу от счастья и красоты
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ты же вроде уходил целую книгу по макросам читать
похоже рано тебе на такое замахиваться ;)
источник

VV

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

VV

Vitaly Vasiliev in Clojure — русскоговорящее сообщество
:)
источник

ST

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

VV

Vitaly Vasiliev in Clojure — русскоговорящее сообщество
я короче похоже не разобрался почему там @ должна стоять
источник