Size: a a a

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

2020 April 10

ST

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

DL

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

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
собствено вопрос как раз и в том что не так с вызовом из кложурскрипта
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
А почему там вообще (eval form), почему не просто form?
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
Pavel Peganov
А почему там вообще (eval form), почему не просто form?
потому что form это просто список символов когда мы передаём что то в макрос оно не эвалится само собой
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Sergey Tkachenko
потому что form это просто список символов когда мы передаём что то в макрос оно не эвалится само собой
так макрос не эвалится сам собой
источник

DL

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

PP

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

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
и с макросами и с эвал правило простое: если вообще реализуемо без них - нужно реализовывать без них (и никаких "компайл-тайм факториалов")
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Предподготавливать в макросах значения рано, ибо готовые значения никак обратно в код не развернуть, особенно функции. Нужно возвращать синтаксические конструкции, которые подготовят нужные значения уже в рантайме. Хотя бы если это и символы, указывающие на функции, определённые где-то ещё.
Хотя бы потому, что разворачивание макросов и выполнение могут в разных средах происходить (что вроде как раз так и есть с традиционным cljs).
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
и с макросами и с эвал правило простое: если вообще реализуемо без них - нужно реализовывать без них (и никаких "компайл-тайм факториалов")
Ну и да, это 👆
источник

A

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

VL

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

ИФ

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

a

akond in Clojure — русскоговорящее сообщество
все назад в яваскрипт
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
akond
все назад в яваскрипт
источник

KR

Kostyantin Randomname in Clojure — русскоговорящее сообщество
отэто норм
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Kostyantin Randomname
отэто норм
я видел репку, там автор вроде бы макросы навернул поверх
источник

MK

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

DL

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